почему я получаю nullpointerexception при получении ячейки Excel - PullRequest
2 голосов
/ 19 сентября 2011

Я получаю это исключение при получении ячейки.Вот что я делаю:

if(versionToAdd.equals("15.6")) {           
    Cell X = wb.getSheetAt(0).getRow(28+j).getCell((short)7);
    Cell Y = wb.getSheetAt(0).getRow(28+j).getCell((short)8);
    X.setCellValue(x);
    Y.setCellValue(y);
}

этот код находится внутри цикла for (j), и каждый раз, когда я перебираю список значений, я динамически получаю новую ячейку.

Проблема в том, что всякий раз, когда он попадает в первую строку col: row (H: 29), я получаю исключение NullPointerException.

ПРИМЕЧАНИЕ. Ячейки в файле xls пустые ...быть проблемой?


Я получил коллекцию значений X / Y в Java, начинает читать ее, но всякий раз, когда она достигает определенного количества значений, я получаю исключение NullPointerException в этой строке:

Cell cellx = row.getCell(8);

Список Java в порядке.Если я добавлю меньше пар X / Y (то есть: 5 или 6 пар), отлично работает, но на определенную сумму (скажем,> 10), я получу это исключение.

Попытка поиска ячеек, всекажется, все в порядке


РЕДАКТИРОВАНИЕ: Спасибо людям за вашу помощь!Я начал использовать XSSF / HSSF из POI.Пытался использовать его раньше, но я не мог заставить его работать должным образом, но теперь я сделал, и он отлично работает, используя методы createRow-createCell:)

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Оба org.apache.poi.ss.usermodel.Sheet и org.apache.poi.ss.usermodel.Row равны Iterable. Если вы используете итератор во вложенных циклах for-each, как показано здесь , вы должны получить только определенные строки.

1 голос
/ 19 сентября 2011

Согласно документации POI, если вы запрашиваете строку, которая не определена, возвращается значение null.То же самое верно для получения ячейки из строки.Я бы предположил, что строки или ячейки не существует.

Также обратите внимание, что short версия getCell устарела в пользу getCell(int)

POI Sheet

POI Row

Вы можете использовать getLastRowNum чтобы убедиться, что число ожидаемых строк существует.То же самое верно для getLastCellNum .

Если вы создаете лист / строку / ячейку, вам нужно использовать методы create.Не методы get.

Создать строку

Создать ячейку

Первые три пункта в руководстве пользователя: каксоздать рабочую книгу, как создать лист, как создать ячейки.Вы должны проверить документацию до публикации вопросов.

Руководство по POI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...