我正在尝试用C#中的Excel文档解析文本。问题是我找不到检测(和忽略)空白单元格的方法。
我搜索了这个论坛和其他许多人,但我仍然无法让它发挥作用。
我在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
根据我使用的apprach,我得到不同的错误,来自HRESULT的异常:0x800A03EC就是其中之一。
我是否错过了一些基本的东西,当然这必须是一项共同的任务?
如果某种灵魂能够向我展示一种检测空白细胞的好方法,我会非常感激!
亲切的问候
答案 0 :(得分:1)
你应该使用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
答案 1 :(得分:1)
尝试使用Range对象的Text属性...
rng.Text == String.Empty
答案 2 :(得分:0)
试试这个:
if (ws.IsEmpty(Cells[row, col]))
我不确切地记得我是否有正确的语法从.NET移植到Excel,但这是我在Excel中的VB宏中使用的命令。
你也可以尝试IsNumeric(Cells [row,col] .Value)
Excel单元格的默认值为空(但我找不到MSN链接来验证这一点!)
请参阅:What is the difference between =Empty and IsEmpty() in VBA (Excel)?