【问题标题】:Null Pointer Exception at createCell - apache POIcreateCell 处的空指针异常 - apache POI
【发布时间】:2020-11-29 22:56:32
【问题描述】:

我有以下代码:

if (verifica == false) {

                            Row add = wbSheet.getRow(Final);
                            Cell nomeR = add.createCell((short) 3); //Null Pointer Exception
                            nomeR.setCellValue(nome);
                            Final++; 
                        }

我无法理解的是为什么我在该行收到此错误。 因为该行唯一要做的就是创建一个单元格,它将被填充到下一行。

感谢您的帮助

【问题讨论】:

  • 可能 wbSheet.getRow(Final) 返回 null。
  • 但是即使我设置了一个数字而不是把变量“Final”,我仍然在同一行得到同样的错误

标签: java excel nullpointerexception apache-poi


【解决方案1】:

如果您的 .xlsx 文件包含空白单元格的任何格式,则 poi 读数不会将其视为 null,但是如果您想打印它的值,它将给出 NullPointerException。

*如果取消注释打印语句,它将抛出 NullPointerException。

FileInputStream fin = new FileInputStream(xlsFile);
XSSFWorkbook wb = new XSSFWorkbook(end);
XSSFSheet sheet = wb.getSheetAt(1);
int RowWithNullValue=0, RowWithoutNullValue=0;
for (int i=0;i<1000;i++){
    if (sheet.getRow(i)==null)
        RowWithNullValue++;
    else{
        RowWithoutNullValue++;
    //  logger.info(sheet.getRow(0).getCell(0));
    }
}
System.out.println(sheet.getLastRowNum());
System.out.println(RowWithNullValue+","+RowWithoutNullValue);

您可以检查Apache POI docs. 以及它们在获取行时如何检查空值。

【讨论】:

    【解决方案2】:

    XSSFRow.CreateCell 需要它的 XSSFWorkbook 作为父级。确保您的 XSSFSheet 是否由 XSSFWorkbook 实例创建。 NPOI 源代码:

    public NPOI.SS.UserModel.Cell CreateCell(int column)
    {
        return this.CreateCell(column, NPOI.SS.UserModel.CellType.BLANK);
    }        
    public NPOI.SS.UserModel.Cell CreateCell(int columnIndex, NPOI.SS.UserModel.CellType type)
    {
        Cell cell = new HSSFCell(book, sheet, RowNum, (short)columnIndex, type);
    
        AddCell(cell);
        sheet.Sheet.AddValueRecord(RowNum, ((HSSFCell)cell).CellValueRecord);
        return cell;
    }
    

    HSSFCell的构造函数需要book,sheet。

    【讨论】:

      【解决方案3】:

      当您通过fileouputstream创建了一个excel表但您在创建单元格之前忘记创建行时会发生这种情况,我希望这能解决新人的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        相关资源
        最近更新 更多