Could not auto-size column. Make sure the column was tracked prior to auto-sizing the column.

SpringBoot-POI报错解决

Could not auto-size column. Make sure the column was tracked prior to auto-sizing the column.
翻译:无法自动调整列的大小。在自动调整列的大小之前,请确保已跟踪该列。

原因及解决:
在使用SXSSFSheet对象时,自动调整列宽的方法与XSSFSheet对象的不同。当调用autoSizeColumn()方法时,需要先调用trackAllColumnsForAutoSizing()方法来跟踪要自动调整宽度的所有列。否则,将会收到这个错误消息。

在使用循环自动调整多列宽度时,应该在循环体外调用 trackAllColumnsForAutoSizing() 方法,然后在循环体内调用 autoSizeColumn() 方法来逐个调整每列的宽度。

例如我的列宽自适应方法:

//默认列宽自适应,可限制最小列宽、最大列宽
private static void adaptiveColumnWidth(SXSSFSheet sheet, int columnCount, Integer minColumnWidth, Integer maxColumnWidth) {sheet.trackAllColumnsForAutoSizing();//跟踪要自动调整宽度的所有列for (int i = 0; i < columnCount; i++) {//设置列宽自适应sheet.autoSizeColumn(i);int currentColumnWidth = sheet.getColumnWidth(i);// 如果最小列宽不为null,且自适应列宽小于最小列宽,则设置该列宽为最小列宽if (minColumnWidth!=null && currentColumnWidth < (minColumnWidth * 256)) {sheet.setColumnWidth(i, minColumnWidth * 256);}// 如果最大列宽不为null,且自适应列宽大于最大列宽,则设置该列宽为最大列宽if (maxColumnWidth!=null && currentColumnWidth > (maxColumnWidth * 256)) {sheet.setColumnWidth(i, maxColumnWidth * 256);}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部