Hutool工具类ExcelWriter导出Excel列宽自适应

背景

项目中使用ExcelWriter导出Excel需要列宽自适应。

解决方案

官方文档

官方已经提供了解决方案,可以直接调用:

官方文档

即:writer.autoSizeColumnAll();

注意!!

这一行代码一定要在写出内容后调用,即:如果你的代码中有类似writer.write(list)的片段,一定要放在这个片段之后,否则不会生效!

调用

同时,目前autoSizeColumn()对于中文的支持并不完美,会出现宽度不足的情况。解决方法如下:

1
2
3
4
5
6
7
Sheet sheet = writer.getSheet();
for (int i = 0; i < headers.size(); i++) {
// 调整每一列宽度
sheet.autoSizeColumn((short) i);
// 解决自动设置列宽中文失效的问题
sheet.setColumnWidth(i, sheet.getColumnWidth(i) * 20 / 10);
}