繁体   English   中英

访问从Excel文件获得的多维数组的元素

[英]Accessing elements of a multi-dimensional array obtained from excel file

我正在尝试从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位置不应该存在吗? 我在这里做错了什么?

就像一些评论所说,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。

高强

对于任何普通人来说似乎都是合乎逻辑的,但是对于我们习惯于从0开始的数组的开发人员来说,这看起来很奇怪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM