小编Zma*_*147的帖子

Apache POI .getCell() 错误,如果空白,java.lang.NullPointerException 无法读取单元格

我最近在使用 Apache POI 的 Excel 文件的 .getCell() 方法时遇到了麻烦。如果我尝试实现 Cell newCell = sheet.getRow(rowNumber).getCell(columnNumber) 或类似的东西,我总是得到错误

Exception in thread "main" java.lang.NullPointerException
at ExcelWriter.getWorkbook(ExcelWriter.java:80)
at Gui2.<init>(Gui2.java:93)
at Main.main(Main.java:24)
Run Code Online (Sandbox Code Playgroud)

如果单元格为空,它指向我正在实现 .getCell() 方法的行。我有代码应该确定单元格是否为空,然后如果为真则打印一些内容,但似乎单元格为空白会导致程序出错。然而,这只发生在某些情况下,我发现如果我创建一个工作表并进行 for 循环以在每一行中创建一个新单元格,我可以读取一个空白单元格并确定它是空白的。但是,如果我随后在该工作表中的任何单元格中键入一个值,然后尝试读取不同的空单元格,我将再次收到错误消息。我不明白为什么只有当我尝试读取空单元格时才会出现此错误,但我需要在我的程序中遍历它们。这是我的代码片段以及导致错误的原因。

public void getWorkbook(String fileName)
{
    try 
    {
        existingFile = new FileInputStream(new File(fileName));
        workbook = new XSSFWorkbook(existingFile);
        Sheet newSheet = workbook.getSheet("Test3");
        //createSheet("Test3", workbook);

        Cell newCell = newSheet.getRow(1).getCell(1);
        if(newCell == null)
        {
            System.out.println("Null");
        }
        else if(newCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
        {
            System.out.println("Number");
        }
        //System.out.println(newCell.getStringCellValue());
    } 
    catch (FileNotFoundException e) //Couldn't find file
    {
        e.printStackTrace();
    } 
    catch …
Run Code Online (Sandbox Code Playgroud)

java apache excel nullpointerexception apache-poi

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

apache ×1

apache-poi ×1

excel ×1

java ×1

nullpointerexception ×1