在C#中使用interop.excel检测空白Excel单元格

我试图从C#中的Excel文档parsing文本。 问题是,我找不到一种方法来检测(并忽略)空白单元格。

我已经search这个论坛和其他许多人,但我仍然无法得到它的工作。

我在Visual Studio 2010 C#中使用Microsoft.Office.Interop.Excel。 我打开Excel并读取和存储数据没有问题。 它只是我不能跳过空白单元格,所以我的程序将相应地存储空白值。

我已经用以下方式定义了woorksheet:

Excel.Application exApp = OpenExcel(); String mySheet = @"C:\sheet.xlsx"; Excel.Workbook wb = exApp.Workbooks.Open(mySheet); Excel.Worksheet ws = wb.Sheets[1];

我通过ws.Cells[row, col]访问我的单元格。 我已经尝试了不同的方法。 仅举几例:

 ws.Cells[row, col].Value2 == null ws.Cells[row, col].Value == null ws.Cells[row, col].Value == "" 

并且还使用Range对象显式地Excel.Range rng = ws.Cells[row, col]使用rng.Value2

取决于我使用哪种说法,我得到不同的错误,从HRESULTexception:0x800A03EC是其中之一。

我错过了一些基本的东西吗?这肯定是一个共同的任务吗?

如果某种灵魂能够给我一个检测空白单元格的好方法,我将非常感激!

亲切的问候

你应该使用SpecialCells。 例如下面的代码将所有空单元格的值设置为零(vba代码)。

 Range("e11:g16").SpecialCells(xlCellTypeBlanks).Value = 0 

或者你可以轻松地循环所有空单元格,如下所示:

 For Each item In Range("e11:g16").SpecialCells(xlCellTypeBlanks) '... Next 

在同样的逻辑中,如果你想遍历所有非空的单元格:

  For Each item In Range("g10:h11").SpecialCells(xlCellTypeConstants) '... Next 

尝试使用Range对象的Text属性…

 rng.Text == String.Empty 

尝试这个:

 if (ws.IsEmpty(Cells[row, col])) 

我不记得是否有从.NET移植到Excel的语法,但这是我在Excel中使用VBmacros的命令。

你也可以尝试IsNumeric(Cells [row,col] .Value)

Excel单元格的默认值是空的(但我找不到MSN链接来validation这一点!)

请参阅: VBA(Excel)中= Empty和IsEmpty()之间的区别是什么?