首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apache poi 4.1.2上的SXSSFSheet autoSizeColumn错误

问apache poi 4.1.2上的SXSSFSheet autoSizeColumn错误
EN

Stack Overflow用户
提问于 2021-01-03 19:26:11
回答 2查看 1.1K关注 0票数 0

我的项目使用Spring Boot。我尝试用org.apache.poi 4.1.2将数据导出到excel文件,我使用autoSizeColumn方法自动调整列的大小

代码语言:javascript
复制
headerRow.forEach(item -> {
  sheet.autoSizeColumn(item.getColumnIndex());
});

但是我得到了一个错误

代码语言:javascript
复制
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)

如何修复此错误

EN

回答 2

Stack Overflow用户

发布于 2021-01-03 19:45:44

我已经修复了此链接SXSSFSheet.autoSizeColumn is throwing IllegalStateException之后的这个问题

我通过使用类SXSSFSheet的public void trackAllColumnsForAutoSizing()方法解决了这个问题

公共空trackAllColumnsForAutoSizing()

跟踪工作表中的所有列以自动调整大小。如果调用此方法,则不需要跟踪单个列。因为确定单元格的最佳宽度代价很高,这可能会影响性能。

自: 3.14beta1

票数 1
EN

Stack Overflow用户

发布于 2022-02-08 22:00:17

我已经修复了上面的问题,只有在你把所有东西都渲染到工作表上之后才能这样做。

如果你有列的列表,那么下面的代码将会很好的工作。

代码语言:javascript
复制
// autoSizing of the columns

for (int i = 0; i < columns.size(); i++) {
  workbookSheet.trackAllColumnsForAutoSizing();
  workbookSheet.autoSizeColumn(i);
}

对于你的情况,下面的方法是可行的。

代码语言:javascript
复制
headerRow.forEach(item -> {
  sheet.trackAllColumnsForAutoSizing();
  sheet.autoSizeColumn(item.getColumnIndex());
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65549273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档