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

使用EasyPoi快速導(dǎo)出Word文檔功能的實(shí)現(xiàn)步驟

 更新時(shí)間:2025年09月28日 10:43:37   作者:Bluecook  
EasyPoi 是一個(gè)基于 Apache POI 的開(kāi)源 Java 工具庫(kù),旨在簡(jiǎn)化 Excel 和 Word 文檔的操作,本文將詳細(xì)介紹如何使用 EasyPoi 快速導(dǎo)出 Word 文檔,需要的朋友可以參考下

一、準(zhǔn)備工作

1、引入依賴

在 Maven 項(xiàng)目中,添加以下依賴:

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easy-poi-base</artifactId>
    <version>4.4.0</version>
</dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easy-poi-annotation</artifactId>
    <version>4.4.0</version>
</dependency>

二、準(zhǔn)備好一個(gè)word模版文件

  1. 在項(xiàng)目的 resources 目錄下創(chuàng)建一個(gè) template/exportTemplate.docx 文件作為模板。
  2. 使用 EasyPoi 提供的占位符 {{}} 來(lái)定義動(dòng)態(tài)內(nèi)容的位置。例如:
{{title}}
{{content}}

三、編寫(xiě)導(dǎo)出方法的工具類

package com.example.simple.util;


import cn.afterturn.easypoi.cache.manager.POICacheManager;
import cn.afterturn.easypoi.word.WordExportUtil;
import cn.afterturn.easypoi.word.entity.MyXWPFDocument;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.util.Map;

@Slf4j
public class ExportWordUtil {

    /**
     * 通用Word文檔導(dǎo)出方法
     * @param templateName 模板文件名
     * @param params 模板參數(shù)
     * @param response HTTP響應(yīng)對(duì)象
     * @param outputFileName 輸出文件名
     * @throws RuntimeException 導(dǎo)出過(guò)程中的異常
     */
    public static void exportWordDocument(String templateName, Map<String, Object> params,
                                          HttpServletResponse response, String outputFileName) {
        MyXWPFDocument doc = null;
        try {
            // 獲取模板文檔
            doc = getXWPFDocument(templateName);
            if (doc == null) {
                throw new RuntimeException("未能找到模板文件");
            }

            // 使用模板引擎替換內(nèi)容
            WordExportUtil.exportWord07(doc, params);

            // 設(shè)置響應(yīng)頭
            response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
            response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName);

            // 輸出文檔
            try (ServletOutputStream outputStream = response.getOutputStream()) {
                doc.write(outputStream);
                outputStream.flush();
            }
        } catch (Exception e) {
            log.error("導(dǎo)出Word文檔失敗", e);
            throw new RuntimeException("導(dǎo)出Word文檔失敗: " + e.getMessage());
        } finally {
            // 關(guān)閉文檔
            if (doc != null) {
                try {
                    doc.close();
                } catch (Exception e) {
                    log.error("關(guān)閉文檔失敗", e);
                }
            }
        }
    }


    public static MyXWPFDocument getXWPFDocument(String templateName) throws IOException {
        // 從classpath獲取模板
        InputStream is = null;
        try {
            is = POICacheManager.getFile(templateName);
            if (is == null) {
                throw new FileNotFoundException("模板文件不存在: " + templateName);
            }
            return new MyXWPFDocument(is);
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    log.error("關(guān)閉輸入流失敗", e);
                }
            }
        }
    }
}

四、在ExportWordServiceImpl層調(diào)用導(dǎo)出word工具方法

注意:在spring-boot3中使用時(shí)response引入的是import jakarta.servlet.http.HttpServletResponse;

@Override
    public void exportWord(Map<String, Object> map, HttpServletResponse response) {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("title", "我是一個(gè)好標(biāo)題");
        params.put("content", "我是一個(gè)很有深度的內(nèi)容");
        ExportWordUtil.exportWordDocument("template/exportTemplate.docx", params, response, "export.docx");
    }

五、前端請(qǐng)求接口后word文檔的展示效果

六、總結(jié)

通過(guò) EasyPoi,我們可以輕松實(shí)現(xiàn) Word 文檔的導(dǎo)出功能。希望本文能幫助你快速上手并完成相關(guān)開(kāi)發(fā)任務(wù)!

到此這篇關(guān)于使用EasyPoi快速導(dǎo)出Word文檔功能的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)EasyPoi導(dǎo)出Word文檔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Spring異步調(diào)用中傳遞上下文的方法

    在Spring異步調(diào)用中傳遞上下文的方法

    這篇文章主要給大家介紹了關(guān)于如何在Spring異步調(diào)用中傳遞上下文的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Log4j按級(jí)別輸出日志到不同文件的實(shí)現(xiàn)方法

    Log4j按級(jí)別輸出日志到不同文件的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇Log4j按級(jí)別輸出日志到不同文件的實(shí)現(xiàn)方法。
    2016-11-11
  • Java中的Semaphore信號(hào)量使用方法代碼實(shí)例

    Java中的Semaphore信號(hào)量使用方法代碼實(shí)例

    這篇文章主要介紹了Java中的Semaphore信號(hào)量使用方法代碼實(shí)例,Semaphore是一種基于計(jì)數(shù)的信號(hào)量,它可以設(shè)定一個(gè)閾值,基于此,多個(gè)線程競(jìng)爭(zhēng)獲取許可信號(hào),做自己的申請(qǐng)后歸還,超過(guò)閾值后,線程申請(qǐng)?jiān)S可信號(hào)將會(huì)被阻塞,需要的朋友可以參考下
    2023-11-11
  • JavaWeb實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)登錄功能

    JavaWeb實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)登錄功能

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等

    Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等

    這篇文章主要介紹了Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java正則匹配中文的方法實(shí)例分析

    Java正則匹配中文的方法實(shí)例分析

    這篇文章主要介紹了Java正則匹配中文的方法,結(jié)合實(shí)例形式分析了Java針對(duì)中文、標(biāo)點(diǎn)及引號(hào)等匹配操作相關(guān)技巧,需要的朋友可以參考下
    2017-03-03
  • Kotlin 與 Java基本語(yǔ)法對(duì)比

    Kotlin 與 Java基本語(yǔ)法對(duì)比

    這篇文章主要介紹了Kotlin 與 Java基本語(yǔ)法對(duì)比的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 簡(jiǎn)單了解Java多線程實(shí)現(xiàn)的四種方式

    簡(jiǎn)單了解Java多線程實(shí)現(xiàn)的四種方式

    這篇文章主要介紹了簡(jiǎn)單了解Java多線程實(shí)現(xiàn)的四種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java開(kāi)發(fā)中讀取XML與properties配置文件的方法

    Java開(kāi)發(fā)中讀取XML與properties配置文件的方法

    這篇文章主要介紹了Java開(kāi)發(fā)中讀取XML與properties配置文件的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • Intellij IDEA命令行執(zhí)行java無(wú)法加載主類解決方案

    Intellij IDEA命令行執(zhí)行java無(wú)法加載主類解決方案

    這篇文章主要介紹了Intellij IDEA命令行執(zhí)行java無(wú)法加載主類解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

若尔盖县| 沁水县| 华阴市| 平舆县| 木里| 西林县| 齐齐哈尔市| 梅河口市| 德格县| 彰化市| 石泉县| 文昌市| 黄浦区| 孝感市| 河北区| 岳普湖县| 日喀则市| 通江县| 元氏县| 黑水县| 昌黎县| 博湖县| 蛟河市| 德化县| 盐边县| 成都市| 双桥区| 阳原县| 虹口区| 师宗县| 抚顺市| 永登县| 乐至县| 靖西县| 响水县| 濮阳市| 北碚区| 双城市| 廉江市| 中山市| 东港市|