SXSSF вызывает попытку записи строки [23237] в диапазоне [0,23272], которая уже записана на диск - PullRequest
0 голосов
/ 30 ноября 2018

Я создаю лист Excel из более чем 100 000 строк.Я использовал SXSSF, так как я обрабатываю огромные данные

 SXSSFWorkbook workbook = new SXSSFWorkbook( 10000 );

, сохраняя в кэше 10 000 строк.

Но я получаю

java.lang.IllegalArgumentException: Попытка записать строку [23237] в диапазоне [0,23272], которая уже записана на диск.в org.apache.poi.xssf.streaming.SXSSFSheet.createRow (SXSSFSheet.java:111)

Я попытался увеличить количество строк кэша до 50 000:

SXSSFWorkbook workbook = new SXSSFWorkbook( 50000 );

Но все равно получаю то же исключение.

В дополнение к этому я попробовал другой способ очистки строк вручную, как,

SXSSFWorkbook workbook = new SXSSFWorkbook( -1 ); // which will store unlimeted rows in cache
sheet.flushRows();

, даже это вызывало подобное исключение!

java.lang.IllegalArgumentException: Попытка записи строки [22708] в диапазоне [0,22719], которая уже записана на диск.

Не уверен, что не так с 23237 -ая строка, где происходит это исключение!Несмотря на то, что количество строк в кэше превышает 50000.

...