sxssf

Why does SXSSF workbook (Apache POI) create larger xlsx sizes than Excel?

余生颓废 提交于 2020-12-29 12:32:39
问题 I developed a Java class to use the SXSSF workbook to overcome the Java Heap error which is always caused by the XSSF workbook when writing very large spreadsheets. See http://poi.apache.org/spreadsheet/how-to.html#sxssf for the solution. In short, I use workbook = new SXSSFWorkbook(SXSSFWorkbook.DEFAULT_WINDOW_SIZE); instead of workbook = new XSSFWorkbook(); This solution works like magic and I am now able to write very large xlsx spreadsheets with a much lower memory footprint. However,

Why does SXSSF workbook (Apache POI) create larger xlsx sizes than Excel?

假如想象 提交于 2020-12-29 12:31:18
问题 I developed a Java class to use the SXSSF workbook to overcome the Java Heap error which is always caused by the XSSF workbook when writing very large spreadsheets. See http://poi.apache.org/spreadsheet/how-to.html#sxssf for the solution. In short, I use workbook = new SXSSFWorkbook(SXSSFWorkbook.DEFAULT_WINDOW_SIZE); instead of workbook = new XSSFWorkbook(); This solution works like magic and I am now able to write very large xlsx spreadsheets with a much lower memory footprint. However,

SXSSF causing Attempting to write a row[23237] in the range [0,23272] that is already written to disk

你。 提交于 2019-12-11 16:54:00
问题 I am creating an excel sheet of more than 100k rows. I have used SXSSF, since I am handling huge data SXSSFWorkbook workbook = new SXSSFWorkbook( 10000 ); keeping 10 000 rows in cache. But I am getting java.lang.IllegalArgumentException: Attempting to write a row[23237] in the range [0,23272] that is already written to disk. at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:111) I have tried increasing the cache rows to 50 000: SXSSFWorkbook workbook = new SXSSFWorkbook(