如何使用NPOI读取包含空单元格的Excel电子表格?

20

当我使用NPOI读取Excel工作表时,空单元格会被跳过。例如,如果该行包含A、B、空格、C,我用以下方式读取:

IRow row = sheet.GetRow(rowNb)

那么row.Cells [1] .ToString()将输出B(如预期的那样),但是row.Cells [2] .ToString()将输出C而不是空字符串。 有没有办法保留空单元格?谢谢。


1
更新您的帖子并附上用于读取Excel文件的代码将会很有帮助。 - Tim Williams
2个回答

36

尝试使用MissingCellPolicyGetCell方法:

ICell cell = row.GetCell(2, MissingCellPolicy.RETURN_NULL_AND_BLANK);

3
在接受的答案之外,该策略也可以在工作簿级别上设置。
workbook.MissingCellPolicy = MissingCellPolicy.RETURN_NULL_AND_BLANK;

当您调用GetCell时,策略将隐式应用,无需每次作为参数传递。

ICell cell = row.GetCell(2);

请注意(至少在我使用的版本中),如果您执行row.Cells[index],它会忽略策略,因此只有在调用row.GetCell(index)时才起作用。

另外作为补充,MissingCellPolicy.RETURN_NULL_AND_BLANK 使得 row.GetCell() 返回 null 当单元格为空。如果你想返回一个空字符串,使用 MissingCellPolicy.CREATE_NULL_AS_BLANK 策略。 - Caio Tsubake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接