我试图使用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。提前感谢!
若要避免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是否可以忽略这些空字符串单元格,这样我们就不必逐个单元格地单独读取单元格来检查