不能从Excel文件中读取空单元格

有一个像这样的excel文件:

1 | AAAA | val1_1 2 | | val1_2 3 | EEEE | val2_1 4 | | val2_2 5 | | val2_3 6 | CCCC | val3_1 

有一个代码:

 Excel.Application xclApp = new Excel.Application(); Excel.Workbooks xclWorkbooks; Excel.Workbook xclWorkbook; Excel.Worksheet xclWorksheet; Excel.Range xclRange; xclWorkbooks = xclApp.Workbooks; string path = "Some path"; xclWorkbook = xclWorkbooks.Open(path); xclWorksheet = (Excel.Worksheet)xclWorkbook.Worksheet.get_Item(1); range = xclWorksheet.UsedRange; string column1Value = ""; string column2Value = ""; for(int i=1; i<=range.Rows.Count; i++) { column1Value = Convert.ToString((range.Cells[i, 1] as Excel.Range).Value); column2Value = Convert.ToString((range.Cells[i, 2] as Excel.Range).Value); } 

1个改动:
column1Value = 1; column2Value = AAAA

2次迭代:
column1Value = 2; column2Value = EEEE

3游戏:
column1Value = 3; column2Value = CCCC

为什么代码在第二行和第二列的第二次迭代中没有得到空值? 以同样的方式4和5行。

我会感兴趣的是,如果你一次读完整个单元格块,会发生什么情况:

 xclWorksheet = (Excel.Worksheet)xclWorkbook.Worksheet.get_Item(1); // Try adding the following lines... what happens ? Range entireWorksheet = xclWorksheet.Range["A1", "Z99999"]; object[,] values = (object[,])entireWorksheet.Value2; int numberOfRows = arr.GetUpperBound(0); int numberOfColumns = arr.GetUpperBound(1); 

这也是从Excel工作表中读取数据的更有效的方法,而不是逐个单元地读取数据。

我们在一些C#Excel插件应用程序中使用这样的代码来cachingExcel工作表中的所有数据。

尝试使用Range (从确切的细胞到确切的细胞数量),而不是UsedRange