Как обработать исключение нулевого указателя при чтении значения столбца даты Excel с использованием метода getDateCellValue () Apche poi - PullRequest
1 голос
/ 02 апреля 2020

Я читаю файл Excel полностью, и у меня есть условие, например, если columnType - это "дата", то установите getCellDateValue, в противном случае используйте formatter и formatCellValue:

String valueOfColumn = StringUtils.equalsIgnoreCase(excelData.getColumnType(), "date")
                            ? format(cell.getDateCellValue(), "dd/MM/yyyy")
                            : formatter.formatCellValue(cell);
excelData.setColumnValue(valueOfColumn );

Работает нормально для всего столбца, имеет ли он значение или нет, но если столбец даты имеет значение NULL, он выдает NullPointerException.

Почему он выдает это исключение и как мне от него избавиться?

1 Ответ

2 голосов
/ 02 апреля 2020

В самой документации Apache poi метод getDateCellValue(), который вы вызываете, возвращает null для пустых ячеек. Так что, скорее всего, метод format() должен выдавать ноль исключение указателя из-за этого. Всякий раз, когда ваш код встречает пустое значение ячейки, когда тип столбца имеет тип 'date', он возвращает ноль, который метод format() пытается отформатировать и выдает исключение.

java .util.Date getDateCellValue ()

Получить значение ячейки в качестве даты.

Для строк мы выдаем исключение. Для пустых ячеек мы возвращаем нуль.

Возвращает: значение ячейки как даты

Короче говоря, вам нужно добавить нулевую проверку в вашем коде для обработки этого дело.

    String valueOfColumn;
   if(cell != null ) {
    if(StringUtils.equalsIgnoreCase(excelData.getColumnType(), "date") && cell.getDateCellValue() != null) {
      valueOfColumn = format(cell.getDateCellValue(), "dd/MM/yyyy");
    } else {
      valueOfColumn = formatter.formatCellValue(cell)
    }
     excelData.setColumnValue(valueOfColumn );
   }
   else {
   // handle else case for cell being null
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...