SXSSFWorkbook 上的 AutosizeColumns

2022-09-02 04:17:17

是否可以在流式 SXSSFWorkbook 上自动调整列的大小?我实现了导出功能,将对象列表导出到Excel。起初,我使用XSSFWorkbook(不是流式处理),在创建所有单元格后,我自动调整了所有列的大小,从而产生了一个不错的excel文件。

对于性能问题,我们希望将工作簿更改为流式处理版本,但这导致了 org.apache.poi.ss.util.SheetUtil.getCellWidth 上的 NullPointer。

是否可以为 SXSSFWorkbook 调用 autoSizeColumns?

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


答案 1

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

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

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

** 单元格永远不应该是空值,否则它会抛出 NullPointerException。因此,如上所述设置值。

非常感谢,这很有帮助!


答案 2

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


推荐