如何在读取Excel工作表时知道单元格是否返回空值?

时间:2013-02-21 23:29:32

标签: java apache-poi

我正在阅读Excel工作表中某些特定单元格的值。这些单元格通常包含String,但有时它们可​​能是空白的(因此可能返回空格或null)。我使用以下代码来获取单元格数据:

Cell cellValue = row.getCell(10, Row.RETURN_NULL_AND_BLANK);
List.add(cellValue.getStringCellValue());

但是,当我运行此代码时,我得到NullPointerException。任何人都可以指出什么是错的,应该添加吗?

注意:我故意使用Row.RETURN_NULL_AND_BLANK而不是MissingCellPolicy.RETURN_NULL_AND_BLANK,因为使用后者会给我一个错误。

3 个答案:

答案 0 :(得分:8)

如果cellValue不为空,则需要对其进行测试,因为在您尝试访问丢失的单元格的情况下,使用Row.RETURN_NULL_AND_BLANK会返回null

您收到NullPointerException,因为缺少指定行的第10列。

如果您需要处理丢失与空白案例的不同,您可以使用以下内容:

Cell cellValue = row.getCell(10, Row.RETURN_NULL_AND_BLANK);
if (cellValue == null)
    List.add("CELL NOT FOUND");
else if("".equals(cellValue.getStringCellValue().trim()))
    List.add("MISSING CONTENT");
else 
    List.add(cellValue.getStringCellValue());

答案 1 :(得分:1)

@dan - 感谢您的回复。这确实有帮助。我修改了我的代码如下,我现在没有得到这个例外:

Cell cellValue = row.getCell(10, Row.CREATE_NULL_AS_BLANK);
if(cellValue.getStringCellValue().equals("")){
    List.add("NOT FOUND");
}
else {
    List.add(cellValue.getStringCellValue());
}

答案 2 :(得分:0)

嘿,那里,              为什么你不能像

那样添加空指针检查
if(null!=cellValue)

    {

    List.add(cellValue.getStringCellValue());
}

希望这有助于如果单元格值为null,那么您不会将单元格值添加到列表中。