sterym
sterym

Reputation: 553

AutosizeColumns on SXSSFWorkbook

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

Answers (5)

Ravi Chhetri
Ravi Chhetri

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

Lof
Lof

Reputation: 271

sheet.trackAllColumnsForAutoSizing();

Upvotes: 6

cremersstijn
cremersstijn

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

Srini Yedire
Srini Yedire

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

Virendra khade
Virendra khade

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

Related Questions