Проблема с получением StreamingReader для работы с Excel xlsx Java - PullRequest
0 голосов
/ 05 июня 2019

Это код, который у меня есть для чтения очень большого файла Excel (xlsx), размером 23,5 МБ и 700 000+ строк.

String dir = rootPath + File.separator + "tmpFiles" + File.separator 
+ FILE_NAME;
File fisNew = new File(dir);
Workbook w = StreamingReader.builder()
.rowCacheSize(100)
.open(fisNew);
Sheet worksheet = null;
worksheet = w.getSheetAt(0);
worksheet.getRow(0).getPhysicalNumberOfCells();

Я получаю UnsupportedOperationException Ошибка нулевого указателя в этой строке: worksheet.getRow(0).getPhysicalNumberOfCells(); И я также не получаю фактическое значение String при печати этой строки: SpecialtyUtil.removeWhiteSpaces(excelheader.getCell(0)). Я должен получить имя столбца, но вместо этого я получаю строку StreamingSheet. Не уверен, что мне нужно изменить здесь для обработки файла xlsx.

РЕДАКТИРОВАТЬ: Есть идеи, как записать в файл Excel с помощью StreamingReader? Я знаю, что это неподдерживаемая операция, но есть ли обходной путь?

1 Ответ

2 голосов
/ 05 июня 2019

Если вы посмотрите следующий исходный код в ссылке на github, StreamingSheet не поддерживает метод getPhysicalNumberOfCells ().Ниже приведен фрагмент кода.

/**
   * Not supported
   */
  @Override
  public int getPhysicalNumberOfRows() {
    throw new UnsupportedOperationException();
  }

Ссылка на github приведена ниже.https://github.com/monitorjbl/excel-streaming-reader/blob/master/src/main/java/com/monitorjbl/xlsx/impl/StreamingSheet.java#L97

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