我编程构建在C#中的Excel电子表格(快乐!),我在Range.Top财产看到怪异行为。Excel单元格报告不同的顶部位置
我建立一个网络图(请不要问我为什么使用Excel,但知道这是不是我决定的,它不能改变)这么多的细胞(节点)由线连接的(弧)使用Worksheet.Shapes.addLine(...)
绘制。不幸的是,我的许多弧线与我的节点没有很好的结合。
每次我将节点添加到所述图(通过填充一个单元格的值与节点ID)我查询其位置,这样我可以计算其中心,并使用它作为一个线锚定点。
在一个示例中调试时我在E3添加两个节点,在1小区C3和2 I所看到的。对于每个单元格,Range.Top属性会给出不同的数字!
Range cell = ws.Cells[3, 3]; // y (rows) before x (cols)
node.renderSmallerX = Convert.ToDouble(cell.Left); // e.g. 100
node.renderSmallerY = Convert.ToDouble(cell.Top); // e.g. 100
node.renderLargerX = node.renderSmallerX + Convert.ToDouble(cell.Width); // e.g. 130
node.renderLargerY = node.renderSmallerY + Convert.ToDouble(cell.Height); // e.g. 115
// ... (next loop)
Range cell = ws.Cells[3, 5];
node.renderSmallerX = Convert.ToDouble(cell.Left); // e.g. 100
node.renderSmallerY = Convert.ToDouble(cell.Top); // e.g. 114.25
node.renderLargerX = node.renderSmallerX + Convert.ToDouble(cell.Width); // e.g. 130
node.renderLargerY = node.renderSmallerY + Convert.ToDouble(cell.Height); // e.g. 129.25
我已阅读the manual和测量是该行的顶部,并没有丝毫关系到它的内容,所以我认为没有理由物业应该在这里改变。
我对这个问题非常恼火,我现在要首先遍历所有必需的列和行来创建坐标字典,而不是查询单元格在使用时的位置,以便至少如果它们“他们错以同样的方式错了。
任何Excel的大师们能解释一下这个非常奇怪的结果,或者告诉我在哪里,我导致的吗?非常感谢。
编辑:应该提到 - .NET V4,V11的Microsoft.Office.Interop.Excel
如果您不清楚您在示例代码中的第一个和第二个“顶部”测量之间做了什么,则很难进行调试。 – 2011-12-19 07:13:04