最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用EasyExcel動態(tài)修改模板Sheet名稱的具體方案

 更新時間:2025年12月11日 10:01:13   作者:weixin_46244623  
在使用 EasyExcel 通過模板導(dǎo)出時,模板中的 sheet 名稱通常是固定的,如果我們希望在導(dǎo)出時根據(jù)業(yè)務(wù)需要 動態(tài)修改 sheet 名稱,可以通過自定義 SheetWriteHandler 完成,所以本文介紹了Java使用EasyExcel動態(tài)修改模板Sheet名稱的具體方案,需要的朋友可以參考下

引言

在使用 EasyExcel 通過模板導(dǎo)出時,模板中的 sheet 名稱通常是固定的,如果我們希望在導(dǎo)出時根據(jù)業(yè)務(wù)需要 動態(tài)修改 sheet 名稱,可以通過自定義 SheetWriteHandler 完成。

很多同學(xué)在釘釘群里提到可以寫攔截器,我百度了一下,最終成功用下面的方式解決了 —— 記錄一下方案。

使用方式

只需要在構(gòu)建 WriteSheet 時注冊我們自定義的 handler:

WriteSheet writeSheet = EasyExcel.writerSheet(0)
        .registerWriteHandler(new CustomTemplateSheetStrategy("動態(tài)命名sheet"))
        .build();

自定義 SheetWriteHandler 攔截器

下面是完整代碼:用于在 sheet 創(chuàng)建完成后,動態(tài)修改 sheet 名稱。

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

/**
 * 自定義模板導(dǎo)出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) {
    }

    /**
     * 功能:動態(tài)修改模板中sheet的名稱
     * sheet創(chuàng)建完成后調(diào)用
     * @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 在創(chuàng)建 sheet 時會回調(diào) SheetWriteHandler

  • beforeSheetCreate:Sheet 創(chuàng)建
  • afterSheetCreate:Sheet 創(chuàng)建

我們需要在 創(chuàng)建后 修改名稱,因此代碼寫在 afterSheetCreate 中。

writeWorkbookHolder.getCachedWorkbook() 實(shí)際獲取的是底層的 POI Workbook,直接改 sheet 名即可。

結(jié)論

通過自定義 SheetWriteHandler,可以優(yōu)雅地實(shí)現(xiàn)動態(tài)修改模板 Excel 中的 sheet 名稱,適用于:

? 模板導(dǎo)出
? 多 sheet 模板
? sheet 名依賴參數(shù)、日期、用戶輸入等場景

到此這篇關(guān)于Java使用EasyExcel動態(tài)修改模板Sheet名稱的具體方案的文章就介紹到這了,更多相關(guān)Java EasyExcel修改Sheet名稱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Java實(shí)現(xiàn)Socket編程入門

    基于Java實(shí)現(xiàn)Socket編程入門

    Java最初是作為網(wǎng)絡(luò)編程語言出現(xiàn)的,使得客戶端和服務(wù)器的溝通變成了現(xiàn)實(shí),而在網(wǎng)絡(luò)編程中,使用最多的就是Socket,本文就來介紹一下基于Java實(shí)現(xiàn)Socket編程入門,感興趣的可以來了解一下
    2022-03-03
  • IntelliJ IDEA配置java環(huán)境及解決IDEA不能直接運(yùn)行單個JAVA文件的問題

    IntelliJ IDEA配置java環(huán)境及解決IDEA不能直接運(yùn)行單個JAVA文件的問題

    這篇文章主要介紹了IntelliJ IDEA配置java環(huán)境及解決IDEA不能直接運(yùn)行單個JAVA文件的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Spring Boot中數(shù)據(jù)庫操作Druid和HikariDataSource的詳細(xì)過程

    Spring Boot中數(shù)據(jù)庫操作Druid和HikariDataSource的詳細(xì)過程

    這篇文章主要介紹了Spring Boot中數(shù)據(jù)庫操作Druid和HikariDataSource的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 徹底解決Spring MVC中文亂碼問題的方案

    徹底解決Spring MVC中文亂碼問題的方案

    這篇文章主要介紹了徹底解決Spring MVC中文亂碼問題的方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • Java泛型類型通配符和C#對比分析

    Java泛型類型通配符和C#對比分析

    下面小編就為大家?guī)硪黄狫ava泛型類型通配符和C#對比分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Spring啟動指定時區(qū)的兩種方法

    Spring啟動指定時區(qū)的兩種方法

    最近項目啟動,時間要修改成東七區(qū)時間,本文主要介紹了Spring啟動指定時區(qū)的兩種方法,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題

    解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題

    這篇文章主要介紹了解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java中把字符串轉(zhuǎn)成 double的方法

    java中把字符串轉(zhuǎn)成 double的方法

    Java 中可以使用 Double 類中的靜態(tài)方法 parseDouble() 將一個字符串轉(zhuǎn)換為 double 類型的數(shù)值,本文結(jié)合實(shí)例代碼對java字符串轉(zhuǎn)成 double詳細(xì)講解,需要的朋友參考下吧
    2023-08-08
  • kafka中節(jié)點(diǎn)實(shí)現(xiàn)服役和退役方式

    kafka中節(jié)點(diǎn)實(shí)現(xiàn)服役和退役方式

    本文詳細(xì)描述了如何在Kafka集群中進(jìn)行節(jié)點(diǎn)的服役和退役操作,包括節(jié)點(diǎn)準(zhǔn)備、負(fù)載均衡計劃的創(chuàng)建與執(zhí)行、以及驗(yàn)證副本存儲計劃等步驟
    2025-11-11
  • Java for循環(huán)詳解

    Java for循環(huán)詳解

    這篇文章主要介紹了Java for循環(huán)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論

南安市| 韩城市| 厦门市| 勐海县| 玉龙| 德惠市| 兴山县| 兰溪市| 延安市| 祁阳县| 上虞市| 塔城市| 邢台县| 马鞍山市| 多伦县| 沁阳市| 东宁县| 罗源县| 法库县| 古交市| 电白县| 胶南市| 乌拉特中旗| 浏阳市| 凤冈县| 枞阳县| 尚志市| 建水县| 休宁县| 内乡县| 江川县| 兴宁市| 平顺县| 望奎县| 洪洞县| 石景山区| 新沂市| 济源市| 东山县| 应用必备| 香河县|