SXSSFWorkbook上的AutosizeColumns

时间:2013-01-24 08:42:24

标签: java nullpointerexception apache-poi

是否可以在流式SXSSFWorkbook上使用autoSizeColumns? 我实现了导出功能,以将对象列表导出为ex​​cel。起初我使用了XSSFWorkbook(不是流式传输),在创建了所有单元格之后,我自动化了所有列,产生了一个很好的excel文件。

对于性能问题,我们希望将工作簿更改为流式版本,但这会在org.apache.poi.ss.util.SheetUtil.getCellWidth中生成NullPointer。

是否可以为SXSSFWorkbook调用autoSizeColumns?

我正在使用poi-ooxml 3.9,但我在3.8中遇到了同样的问题。

3 个答案:

答案 0 :(得分:12)

您需要确保每个单元格都有值。

我们使用以下代码将字符串值设置为单元格:

Cell c = row.createCell(i);
c.setCellValue(text == null ? "" : text );

答案 1 :(得分:0)

使用 sheet.isColumnTrackedForAutoSizing(0);  对于第一个,随后用于其他列,每当执行代码autoSizeColumn(0)时,我都会遇到异常。通过使用上面的代码,我已经解决了该问题,也可以根据文本扩展列宽。

答案 2 :(得分:-1)

错误:org.apache.poi.ss.util.SheetUtil.getCellWidth(SheetUtil.java:122)

上的NullPointerException

修复:始终将值设置为Cell,如下所示,当Cell中为null时,它将引发NullPointerException,因此将值设置为:

Cell c = row.createCell(i);
c.setCellValue(text == null ? "" : text );