我的项目使用Spring Boot。我尝试用org.apache.poi 4.1.2将数据导出到excel文件,我使用autoSizeColumn方法自动调整列的大小
headerRow.forEach(item -> {
sheet.autoSizeColumn(item.getColumnIndex());
});但是我得到了一个错误
java.lang.IllegalStateException: Could not auto-size column. Make sure the column was tracked prior to auto-sizing the column.
at org.apache.poi.xssf.streaming.SXSSFSheet.autoSizeColumn(SXSSFSheet.java:1591)
at org.apache.poi.xssf.streaming.SXSSFSheet.autoSizeColumn(SXSSFSheet.java:1545)如何修复此错误
发布于 2021-01-03 19:45:44
我已经修复了此链接SXSSFSheet.autoSizeColumn is throwing IllegalStateException之后的这个问题
我通过使用类SXSSFSheet的public void trackAllColumnsForAutoSizing()方法解决了这个问题
公共空trackAllColumnsForAutoSizing()
跟踪工作表中的所有列以自动调整大小。如果调用此方法,则不需要跟踪单个列。因为确定单元格的最佳宽度代价很高,这可能会影响性能。
自: 3.14beta1
发布于 2022-02-08 22:00:17
我已经修复了上面的问题,只有在你把所有东西都渲染到工作表上之后才能这样做。
如果你有列的列表,那么下面的代码将会很好的工作。
// autoSizing of the columns
for (int i = 0; i < columns.size(); i++) {
workbookSheet.trackAllColumnsForAutoSizing();
workbookSheet.autoSizeColumn(i);
}对于你的情况,下面的方法是可行的。
headerRow.forEach(item -> {
sheet.trackAllColumnsForAutoSizing();
sheet.autoSizeColumn(item.getColumnIndex());
});https://stackoverflow.com/questions/65549273
复制相似问题