Java使用EasyExcel动态修改模板Sheet名称的具体方案

 更新时间:2025年12月11日 10:01:13   作者:weixin_46244623  
在使用 EasyExcel 通过模板导出时,模板中的 sheet 名称通常是固定的,如果我们希望在导出时根据业务需要 动态修改 sheet 名称,可以通过自定义 SheetWriteHandler 完成,所以本文介绍了Java使用EasyExcel动态修改模板Sheet名称的具体方案,需要的朋友可以参考下

引言

在使用 EasyExcel 通过模板导出时,模板中的 sheet 名称通常是固定的,如果我们希望在导出时根据业务需要 动态修改 sheet 名称,可以通过自定义 SheetWriteHandler 完成。

很多同学在钉钉群里提到可以写拦截器,我百度了一下,最终成功用下面的方式解决了 —— 记录一下方案。

使用方式

只需要在构建 WriteSheet 时注册我们自定义的 handler:

WriteSheet writeSheet = EasyExcel.writerSheet(0)
        .registerWriteHandler(new CustomTemplateSheetStrategy("动态命名sheet"))
        .build();

自定义 SheetWriteHandler 拦截器

下面是完整代码:用于在 sheet 创建完成后,动态修改 sheet 名称。

import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;

/**
 * 自定义模板导出sheet拦截器
 */
public class CustomTemplateSheetStrategy implements SheetWriteHandler {

    private Integer sheetNo;

    private String sheetName;

    public CustomTemplateSheetStrategy(String sheetName) {
        this.sheetName = sheetName;
    }

    public CustomTemplateSheetStrategy(Integer sheetNo, String sheetName) {
        this.sheetNo = sheetNo;
        this.sheetName = sheetName;
    }

    @Override
    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
    }

    /**
     * 功能:动态修改模板中sheet的名称
     * sheet创建完成后调用
     * @param writeWorkbookHolder
     * @param writeSheetHolder
     */
    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        if (sheetName == null) {
            return;
        }
        if (sheetNo == null) {
            sheetNo = 0;
        }
        writeWorkbookHolder.getCachedWorkbook().setSheetName(sheetNo, sheetName);
    }
}

原理说明

EasyExcel 在创建 sheet 时会回调 SheetWriteHandler

  • beforeSheetCreate:Sheet 创建
  • afterSheetCreate:Sheet 创建

我们需要在 创建后 修改名称,因此代码写在 afterSheetCreate 中。

writeWorkbookHolder.getCachedWorkbook() 实际获取的是底层的 POI Workbook,直接改 sheet 名即可。

结论

通过自定义 SheetWriteHandler,可以优雅地实现动态修改模板 Excel 中的 sheet 名称,适用于:

✔ 模板导出
✔ 多 sheet 模板
✔ sheet 名依赖参数、日期、用户输入等场景

到此这篇关于Java使用EasyExcel动态修改模板Sheet名称的具体方案的文章就介绍到这了,更多相关Java EasyExcel修改Sheet名称内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot整合Drools的实现步骤

    SpringBoot整合Drools的实现步骤

    Drools是一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行所需的业务规则。本文将讲述SpringBoot整合Drools的步骤
    2021-05-05
  • Java匿名内部类和Lambda(->) 的多种写法总结

    Java匿名内部类和Lambda(->) 的多种写法总结

    这篇文章主要和大家分享一下Java匿名内部类和Lambda(->) 的多种写法,文中的示例代码讲解详细,对我们学习Java有一定帮助,需要的可以先看一下
    2022-07-07
  • Java中超详细this与super的概念和用法

    Java中超详细this与super的概念和用法

    这篇文章主要介绍了Java中超详细this与super的概念和用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Java集合的Collection接口和List接口详解

    Java集合的Collection接口和List接口详解

    这篇文章主要为大家详细介绍了Java集合的Collection接口和List接口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • springboot系统首页自动跳转拼接到index的实现

    springboot系统首页自动跳转拼接到index的实现

    文章介绍了通过访问http://localhost:8091时,服务器会动态跳转到系统的欢迎页面,实现原理是在程序启动时自动加载默认的请求路径,并动态拼接前缀和后缀,最终指向./WEB-INF/views/index.jsp,作者分享了这一经验,并希望得到大家的支持
    2025-11-11
  • Spring整合WebSocket应用示例(上)

    Spring整合WebSocket应用示例(上)

    以下教程是小编在参与开发公司的一个crm系统,整理些相关资料,在该系统中有很多消息推送功能,在其中用到了websocket技术。下面小编整理分享到脚本之家平台供大家参考
    2016-04-04
  • MyBatis Plus整合Redis实现分布式二级缓存的问题

    MyBatis Plus整合Redis实现分布式二级缓存的问题

    Mybatis内置的二级缓存在分布式环境下存在分布式问题,无法使用,但是我们可以整合Redis来实现分布式的二级缓存,这篇文章给大家介绍MyBatis Plus整合Redis实现分布式二级缓存,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • 解决Mybatis中mapper的ID冲突问题

    解决Mybatis中mapper的ID冲突问题

    这篇文章主要介绍了解决Mybatis中mapper的ID冲突问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java jdk安装及javac命令无效解决方案

    Java jdk安装及javac命令无效解决方案

    这篇文章主要介绍了Java jdk安装及javac命令无效解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • MyBatis 数据封装全攻略(告别空值与映射混乱问题)

    MyBatis 数据封装全攻略(告别空值与映射混乱问题)

    本文系统介绍MyBatis数据封装的常见问题及解决方案,涵盖resultType、resultMap、驼峰转换、嵌套处理、懒加载等核心机制,并推荐MyBatis-Plus简化开发,提升效率与可维护性,感兴趣的朋友跟随小编一起看看吧
    2025-09-09

最新评论