访问从excel文件获取的多维数组的元素

时间:2014-02-26 22:14:04

标签: c# arrays indexoutofrangeexception

我正在尝试将excel文件中的单元格提取到C#中的多维数组中。我有以下代码段:

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(this.pathToFile);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;


Object[,] dataArray;

dataArray = (System.Object[,])xlRange.Value2;

Console.WriteLine(dataArray.GetLength(0));
Console.WriteLine(dataArray.GetLength(1));
Console.WriteLine(dataArray[0,0]); //As a test

代码一直运行到最后一行,它抛出一个IndexOutOfRange异常。该行上方的两行正确打印:

2
117
"IndexOutOFRangeException"

如果长度分别为2和117,那么数组中的0,0位置是否应该存在某些东西?我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

正如一些评论所说,C#中的Excel类型是从1开始的。

在您的代码中打开您编写的第一个工作表

// index is 1
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];

工作簿中第一张工作表的索引是1,而不是0。

当您想从dataArray获取数据时,您应该从[1,1]

开始
// will write to top left value from your worksheet
Console.WriteLine(dataArray[1, 1]);

我认为他们使用了基于1的数组,因为工作表默认名为“Sheet1”“Sheet2”,行从1开始,你没有A0。

excel

对于任何普通人来说似乎都是合乎逻辑的,但对于我们来说,使用基于0的阵列的开发人员看起来很奇怪。