是否可以在流式SXSSFWorkbook上使用autoSizeColumns? 我实现了导出功能,以将对象列表导出为excel。起初我使用了XSSFWorkbook(不是流式传输),在创建了所有单元格之后,我自动化了所有列,产生了一个很好的excel文件。
对于性能问题,我们希望将工作簿更改为流式版本,但这会在org.apache.poi.ss.util.SheetUtil.getCellWidth中生成NullPointer。
是否可以为SXSSFWorkbook调用autoSizeColumns?
我正在使用poi-ooxml 3.9,但我在3.8中遇到了同样的问题。
答案 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)
修复:始终将值设置为Cell,如下所示,当Cell中为null时,它将引发NullPointerException,因此将值设置为:
Cell c = row.createCell(i);
c.setCellValue(text == null ? "" : text );