当前位置: 代码网 > it编程>编程语言>Java > Java使用EasyExcel动态修改模板Sheet名称的具体方案

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

2025年12月11日 Java 我要评论
引言在使用 easyexcel 通过模板导出时,模板中的 sheet 名称通常是固定的,如果我们希望在导出时根据业务需要 动态修改 sheet 名称,可以通过自定义 sheetwritehandler

引言

在使用 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名称内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com