当前位置: 首页 > 知识库问答 >
问题:

如何使用POI避免空单元格的NullPointerException?

林星阑
2023-03-14

我试图使用Apache POI从excel.xlsx文件中获取java程序中的一些值,但我遇到了麻烦,因为我的循环有时会遇到一个空单元格,然后得到一个NullPointerException。我如何才能在读取细胞之前“测试”它?下面是我的一段代码:

FileInputStream file = new FileInputStream(new File(file));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
int rows;
rows = sheet.getPhysicalNumberOfRows();
for (int i=1;i<rows;i++){
    Row row = sheet.getRow(i);
    Cell cell = row.getCell(2); // Here is the NullPointerException
    String cellString = cell.getStringCellValue();
    myArrayList.add(cellString);
}

这让我想到:

java.lang.NullPointerException
at analyse.Analyser.getExcelWords3(Analyser.java:73)
at analyse.Analyser.main(Analyser.java:21)

我想知道在尝试读取单元格之前是否有可能检查单元格是否为空,那么我就不会得到NPE。提前感谢!

共有1个答案

饶元章
2023-03-14

若要避免NullPointerException,请添加以下行。MissingCellPolicy.create_Null_as_blank

Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);

这将创建一个空白单元格,而不是给你NPE

 类似资料:
  • 有人能给我一个解决方案,我可以在单元格为空时读取应用到单元格的样式吗? 谢了。

  • 我在读一个excel文件。我希望得到空单元格的行和列号,如果有类似的: 这里我想要空白单元格的行和列索引,我试了很多东西但都不成功

  • 我试图从excel文件中读取所有数据,其中也有一些公式单元格,但我不知道哪个单元格是公式单元格。如何读取单元格中的所有值,而不考虑单元格的类型。 我的代码看起来像这样 我得到的公式单元格值为0

  • 我要做一个垂直合并使用这个函数: 但我不能用类似的函数进行水平合并: 谢谢!

  • 在更新一些值后,我使用Apache POI从现有的XSSFWorkbook创建新的XSSFWorkbook。假设我现有的工作簿中有两个工作表(比方说:工作表A和B)。工作表B有一些来自工作表A的单元格引用。如果我修改工作表A的这些单元格值并将它们保存为新工作簿,工作表B的相应单元格值也应该更新。但事实并非如此。如何以编程方式更新它们?.谢谢。 我的代码:

  • 我正在使用Apache POI解析Excel。是否可以让Apache POI将空字符串视为null并忽略它们? 可能有excel表将数百万个单元格设置为文本,如下所示,导致所有单元格被Apache POI解释为空字符串。由于有数百万个空的字符串单元格,逐个单元格地检查会导致严重的性能问题: 无论如何,Apache POI是否可以忽略这些空字符串单元格,这样我们就不必逐个单元格地单独读取单元格来检查