Reputation: 553
Is it possible to autoSizeColumns on a streaming SXSSFWorkbook? I implemented an export functionality to export a list of objects to excel. At first I used the XSSFWorkbook (not streaming) and after all the cells were created, I autosized all the columns, resulting in a nice excel file.
For performance issues we wanted to change the workbook to the streaming version, but this resulted in a NullPointer at org.apache.poi.ss.util.SheetUtil.getCellWidth.
Is it possible to call autoSizeColumns for a SXSSFWorkbook?
Im using poi-ooxml 3.9, but I have the same issue in 3.8.
Upvotes: 25
Views: 43257
Reputation: 11
sheet.trackAllColumnsForAutoSizing(), this works but it is truly not a good approach. Because if you are working with lakhs of data, it delays the process of writing to file by huge margin
Upvotes: 0
Reputation: 2395
You need to make sure every cell has a value.
We use the following code to set a string value to a cell:
Cell c = row.createCell(i);
c.setCellValue(text == null ? "" : text );
** Cell should never be null values else it throws NullPointerException. Hence set the value as shown above.
Thanks a lot, this helped!!
Upvotes: 22
Reputation: 1
Error: NullPointerException on org.apache.poi.ss.util.SheetUtil.getCellWidth(SheetUtil.java:122)
Fix: Always set value to Cell as shown below, it throws NullPointerException when there is null in Cell, so set the value as:
Cell c = row.createCell(i);
c.setCellValue(text == null ? "" : text );
Upvotes: -2
Reputation: 97
Use sheet.isColumnTrackedForAutoSizing(0); for first and subsequently used for other column, i have faced exception whenever code executed autoSizeColumn(0) get executed. by using above code i have resolved the issue and it's good to expand the column width too based on the text.
Upvotes: 4