在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()之间的区别是什么?