FlowingCode / GridExporterAddon

Other
10 stars 8 forks source link

Large data throws exception for excel export #87

Closed deyaeddin closed 5 months ago

deyaeddin commented 5 months ago

When exporting data more than 64,000 records, the following error is thrown.

java.lang.IllegalStateException: The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook
    at org.apache.poi.xssf.model.StylesTable.createCellStyle(StylesTable.java:860) ~[poi-ooxml-5.2.3.jar:5.2.3]
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.createCellStyle(XSSFWorkbook.java:788) ~[poi-ooxml-5.2.3.jar:5.2.3]
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.createCellStyle(XSSFWorkbook.java:108) ~[poi-ooxml-5.2.3.jar:5.2.3]
    at com.flowingcode.vaadin.addons.gridexporter.ExcelInputStreamFactory.lambda$buildRow$2(ExcelInputStreamFactory.java:277) ~[grid-exporter-addon-2.2.0.jar:2.2.0]
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) ~[na:na]
    at com.flowingcode.vaadin.addons.gridexporter.ExcelInputStreamFactory.buildRow(ExcelInputStreamFactory.java:270) ~[grid-exporter-addon-2.2.0.jar:2.2.0]
    at com.flowingcode.vaadin.addons.gridexporter.ExcelInputStreamFactory.fillData(ExcelInputStreamFactory.java:251) ~[grid-exporter-addon-2.2.0.jar:2.2.0]
    at com.flowingcode.vaadin.addons.gridexporter.ExcelInputStreamFactory.createInputStream(ExcelInputStreamFactory.java:112) ~[grid-exporter-addon-2.2.0.jar:2.2.0]
    at com.vaadin.flow.server.StreamResource$Pipe.createInputStream(StreamResource.java:99) ~[flow-server-24.3.2.jar:24.3.2]
javier-godoy commented 5 months ago

Thanks for reporting this issue. It seems that we need to reuse existing cell styles instead of cloning them at https://github.com/FlowingCode/GridExporterAddon/blob/a79ff7951d7efa32ca0f2c9e0edce09731973ff2/src/main/java/com/flowingcode/vaadin/addons/gridexporter/ExcelInputStreamFactory.java#L276-L279