【发布时间】:2013-09-03 13:18:36
【问题描述】:
我有一个二维对象数组,我想读取它。程序总是抛出 IndexOutOfRange 异常。
代码如下:
Excel.Range range = activeWorksheet.UsedRange;
MessageBox.Show(range.Value2.GetType().toString()); // output: System.Object[,]
object[,] values = (object[,])range.Value2;
MessageBox.Show("l0="+values.GetLength(0)); // output: 1483
MessageBox.Show("l1"+values.GetLength(1)); // output: 221
MessageBox.Show(values.GetValue(0, 0).ToString()); // -> throws IndexOutOfRangeException
那里到底发生了什么?!有什么想法吗?
【问题讨论】:
-
只是为了尝试。从索引 1,1 开始
-
Good ol' base-1 Excel :-)
-
就是这样。我的天啊。现在我记得为什么我从来不想使用微软工具进行开发
-
因为在决定从何处开始索引引用时存在细微差异?请注意,它在 Excel 中实际上很直观,因为工作表从 1,1 开始。我认为一旦决定是在很久以前做出的,在恐龙漫游地球之前,他们必须坚持下去以保持连续性。现在,如果您正在谈论使用 Excel COM 组件,那么您可能想看看 EPPlus。