阿里 easyExcel 框架,文档自动换行自适应行高实现

看了网上搜索到的大部分实现方式都是需要自己写方法类,计算配置各行的独立行高,使用发现存在准确性及行内多单元格内容无法自适应的问题。

很简单,不需要想的复杂。只需要配置单元格样式策略,将【自动换行:true】打开。

主要代码:contentWriteCellStyle.setWrapped(true);

{
// 生成excel文件
EasyExcel.write(saveWordFilePath, DirectoryPrint2BO.class)
    .withTemplate(excelFileTemplate)
    .needHead(false)
    // 单元格样式策略
    .registerWriteHandler(this.getHorizontalCellStyleStrategy((short) 12))
    .sheet("Sheet1")
    .doWrite(directoryPrint2BoList);
}

/**
* 单元格样式策略
*/
public static HorizontalCellStyleStrategy getHorizontalCellStyleStrategy(Short fontHeightInPoints) {
        // 内容的策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        // 设置边框
        contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
        contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
        contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
        contentWriteCellStyle.setBorderTop(BorderStyle.NONE);

        // 配置字体
        WriteFont contentWriteFont = new WriteFont();
        // 字体
        contentWriteFont.setFontName("宋体");
        // 字体大小
        contentWriteFont.setFontHeightInPoints(fontHeightInPoints);
        // 设置加粗
        contentWriteFont.setBold(false);
        contentWriteCellStyle.setWriteFont(contentWriteFont);

        // 【水平居中需要使用以下两行】
        // 设置文字左右居中
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        // 设置文字上下居中
        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        // 设置 自动换行
        contentWriteCellStyle.setWrapped(true);

        // 样式策略
        return new HorizontalCellStyleStrategy(null, contentWriteCellStyle);
    }

注意:

配置了单元格样式策略以后,就不要再用到其他方式改变行高了,如果写死或者用了网上其他的改变行高的方式,测试该方法就会失效。

如上图,生成文件各个单元格会将【自动换行】打开。如果用其他方式改变了行高,该按钮也会是打开状态但自动换行不会生效。

如果只涉及部分行自动换行的话,需要补充逻辑只为需要自动换行的单元格配置属性,具体没有实现,理论上是完全可以的。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值