hutool autoSizeColumnAll 自适应失效问题

1.api提供了自适应宽度
在这里插入图片描述
2.自测部分

有部分说autoSizeColumnAll 放置的位置应该在完全写入的后面
//一次性写出内容,使用默认样式,强制输出标题
    writer.write(list, true);
  
  自测:autoSizeColumnAll 放在write上面影响header的自适应
  放在write下面都不起作用

解决方式:

	writer.write(list, true); 后面加上:
	setSizeColumn(writer.getSheet());




 public static void setSizeColumn(Sheet sheet) {
 for (int columnNum = 0; columnNum <= 0; columnNum++) {
   int columnWidth = sheet.getColumnWidth(columnNum) / 256;
   for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
     Row row = sheet.getRow(rowNum);
     Row currentRow = row == null ? sheet.createRow(rowNum) : row;
     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);
   }
 }

评论区处理方法:

	/**
     * 自动设置列宽,取前15 rows 作为样本,解决卡顿和不生效
     * @see SheetUtil#getColumnWidth(Sheet, int, boolean, int, int) 
     */
    public static void setColumnWidth(ExcelWriter writer) {
        // 因 column 的计算依赖字体设置,so,必先设置字体后再设列宽
        setFont(writer);
        final Sheet sheet = writer.getSheet();
        int lastRow = Math.min(writer.getRowCount(), 16) - 1;
        for (int i = 0; i < writer.getColumnCount(); i++) {
            writer.setColumnWidth(i, (int) SheetUtil.getColumnWidth(sheet, i, false, 0, lastRow));
        }
    }
 
// 字体:Consolas
    private static void setFont(ExcelWriter writer) {
        final Workbook wb = writer.getWorkbook();
        final StyleSet styleSet = writer.getStyleSet();
 
        final Font headFont = createFont(wb, Font.COLOR_NORMAL, (short) 12, "Consolas"),
        cellFont = createFont(wb, Font.COLOR_NORMAL, (short) 11, "Consolas");
		styleSet.setFont(headFont, false);
		styleSet.setFont(cellFont, true);
	}	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值