Java Apache-POI исключение нулевого указателя при создании ячейки в существующей строке - PullRequest
0 голосов
/ 18 октября 2018

В следующем коде я получаю исключение java.lang.NullPointerException для первого row.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());   

    }

1 Ответ

0 голосов
/ 18 октября 2018

Вы не присвоили результат createRow обратно row.Измените

spreadSheet.createRow(i+1);

на

row = spreadSheet.createRow(i+1);
...