首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Hutool工具类导出Excel设置自适应宽度

Hutool工具类导出Excel设置自适应宽度

作者头像
SmileNicky
发布2024-12-23 11:04:41
发布2024-12-23 11:04:41
1.8K0
举报
文章被收录于专栏:Nicky's blogNicky's blog

Hutool工具类导出Excel设置自适应宽度。最近在用Hutool的工具类BigExcelWriter实现Excel表的导出,测试过程,发现默认是不自动适应宽度的,需要设置属性才能自适应

在Hutool的官方文档https://plus.hutool.cn/apidocs/cn/hutool/poi/excel/BigExcelWriter.html找到下面的属性

注意,文档里面也有提醒此方法必须在指定列数据完全写出后调用才有效,也就是我们需要在write后调用

代码语言:javascript
复制
SXSSFWorkbook workbook = new SXSSFWorkbook();
BigExcelWriter writer = new BigExcelWriter(workbook,"sheet1");
// ... 省略业务实现
writer.writeRow(data);
// 必须在write后调用
writer.autoSizeColumnAll();

不过设置这个自动适配属性后,发现对于数字或者英文字母的都可以自动适配宽度,对于中文的不能自动适配,看了下源码,发现Huttol里面也是调用poi的,应该是poi不能自动适配中文的?所以需要自动手动适配一下宽度

代码语言:javascript
复制
sheet.setColumnWidth(columnNum, columnWidth );

或者网上很多地方的写法,写个工具类,适配一下宽度

代码语言:javascript
复制
public static void setSizeColumn(Sheet sheet, int size) {
     for (int columnNum = 0; columnNum <= size; columnNum++) {
         int columnWidth = sheet.getColumnWidth(columnNum) / 256;
         for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
             Row currentRow;
             if (sheet.getRow(rowNum) == null) {
                 currentRow = sheet.createRow(rowNum);
             } else {
                 currentRow = sheet.getRow(rowNum);
             }

             if (currentRow.getCell(columnNum) != null) {
                 Cell currentCell = currentRow.getCell(columnNum);
                 if (currentCell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
                     int length = currentCell.getStringCellValue().getBytes().length;
                     if (columnWidth < length) {
                         columnWidth = length;
                     }
                 }
             }
         }
         sheet.setColumnWidth(columnNum, columnWidth * 256);
     }
 }

调用:

代码语言:javascript
复制
setSizeColumn(writer.getSheet(), writer.getColumnCount());
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档