在现有行中创建单元格时发生Java Apache POI nullpointer异常

在现有行中创建单元格时发生Java Apache POI nullpointer异常,java,excel,apache-poi,Java,Excel,Apache Poi,在下面的代码中,我在第一行上得到一个java.lang.NullPointerException.createCell(0) 当我删除spreadSheet.getRow(I+1)和它后面的if块时,然后用spreadSheet.createRow(I+1)替换它们,这一切都可以正常工作 不幸的是,这样做会删除我行中的一些现有数据,所以我希望能够阻止这个空异常。但似乎无法找出原因: 我的定义是明确的 行已定义,或者我们将在if块中创建新行 单元格是使用createCell()新创建的,因此无需

在下面的代码中,我在第一行
上得到一个java.lang.NullPointerException.createCell(0)

当我删除
spreadSheet.getRow(I+1)
和它后面的if块时,然后用
spreadSheet.createRow(I+1)
替换它们,这一切都可以正常工作

不幸的是,这样做会删除我行中的一些现有数据,所以我希望能够阻止这个空异常。但似乎无法找出原因:

  • 我的定义是明确的
  • 行已定义,或者我们将在if块中创建新行
  • 单元格是使用
    createCell()
    新创建的,因此无需事先定义
我不知道还能尝试什么,我最困惑的是,当我创建一个新行时它是如何工作的,而当我抓取一个现有行时它却不工作

    //Clone template
    System.out.println(workbook.getNameIndex("template"));
    spreadSheet = workbook.cloneSheet(workbook.getNameIndex("template")+1, infoString);

    //Apply data to cells
    for (int i = 0; i < chartData.getItemCount();i++) {
        row = spreadSheet.getRow(i+1);
        if (row == null) {
            spreadSheet.createRow(i+1);
        }

        row.createCell(0).setCellValue(i+1);
        row.createCell(1).setCellValue(chartData.getDataItem(i).getXValue());
        row.createCell(2).setCellValue(chartData.getDataItem(i).getYValue());   

    }
//克隆模板
System.out.println(workbook.getNameIndex(“模板”);
电子表格=workbook.cloneSheet(workbook.getNameIndex(“模板”)+1,infoString);
//将数据应用于单元格
对于(int i=0;i
您没有将
createRow
的结果分配回
row
。改变

spreadSheet.createRow(i+1);


您没有将
createRow
的结果分配回
row
。改变

spreadSheet.createRow(i+1);