如果文件顶部有空行,则ExcelWorksheet.UsedRange计数错误

时间:2017-11-09 05:56:38

标签: c# excel

我有c#windows应用程序正在读取文件内容。我想只从已使用的行中提取值。

我正在使用此代码:

int rows = ExcelWorksheet.UsedRange.Rows.Count;

一切正常。除非我在顶部有空行,否则计数将不正确。

-File没有特殊字符,公式等。只是简单的文字。

- 如果文件顶部没有空行,应用程序可以读取excel xls和xlsx没有问题。

2 个答案:

答案 0 :(得分:0)

好的,现在我已经意识到我做错了。当然它不会读取我的所有UsedRange.Rows,因为在我的for循环中,我始终在第一行开始阅读。所以我将((Microsoft.Office.Interop.Excel.Range)(ExcelWorksheet.UsedRange)).Row;作为阅读的起点

此代码有效:

int rows = ExcelWorksheet.UsedRange.Rows.Count;
int fRowIndex = ((Microsoft.Office.Interop.Excel.Range)(ExcelWorksheet.UsedRange)).Row;

 int rowCycle = 1;

for (int rowcounter = fRowIndex; rowCycle <= rows; rowcounter++)
{   
  //code for reading        
}

答案 1 :(得分:0)

不是逐行读取Excel,而是更好地将它作为范围在C#中获取,然后将其作为

处理
Sheet.UsedRange.get_Value()

表单中的整个UsedRange。无论何时你想获得UsedRange的一部分,都可以将其作为

Excel.Range cell1 = Sheet.Cells[r0, c0];
Excel.Range cell2 = Sheet.Cells[r1, c1];
Excel.Range rng = Sheet.Range[cell1, cell2];
var v = rng.get_Value();

根据[r1-r0,c1-c0]

的值,你知道C#内存中 v 的大小