java.lang.IllegalStateException: Could not auto-size column. Make sure the column was tracked prior to auto-sizing the column
在用poi生成excel时,想自动调整列宽。
错误原因:方法定义里有问题,以及需要添加代码
解决办法:
错误:
public static <T> void createExcel(Workbook wb,String sheetName, List<T> dataset ) {
Sheet sheet = wb.createSheet(sheetName);
...
for(int i=0;i<excelFields.size();i++)
// i指列的号,列号从0开始
sheet.autoSizeColumn(i);
}
正确写法:
// 参数变为SXSSFWorkbook
public static <T> void createExcel(SXSSFWorkbook wb,String sheetName, List<T> dataset ) {
// 必须用SXSSFSheet才能自动调整列宽
SXSSFSheet sheet = wb.createSheet(sheetName);
....sheet添加数据
// 自动调整列宽
sheet.trackAllColumnsForAutoSizing();
for(int i=0;i<excelFields.size();i++)
sheet.autoSizeColumn(i);
}