国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板)

這篇具有很好參考價值的文章主要介紹了【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

這篇文章,主要介紹如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔。

目錄

一、導(dǎo)出Word文檔

1.1、基礎(chǔ)知識

1.2、制作模板文件

1.3、代碼實(shí)現(xiàn)

(1)引入依賴

(2)創(chuàng)建Freemarker工具類

(3)測試案例代碼

(4)運(yùn)行效果


一、導(dǎo)出Word文檔

1.1、基礎(chǔ)知識

Word文件有兩種后綴格式,分別是:doc和docx,doc是Word2003之前使用的,docx是Word2007之后使用的,可以說docx是對doc的擴(kuò)展和優(yōu)化。docx的響應(yīng)速度、性能、占用空間都比doc更好,另外docx本質(zhì)上是一個zip格式的壓縮文件,底層是基于OOXML組織數(shù)據(jù)的,也就是說,docx底層其實(shí)就是使用XML組成的一系列文件,然后使用程序渲染XML文件,最終就是我們看到的Word文件樣式啦。

【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板),【W(wǎng)PSP筆記】,word,Java導(dǎo)出Word,Freemarker,Word文檔導(dǎo)出功能,根據(jù)模板文件導(dǎo)出Word文檔

我這篇文章中使用的Word模板文件就是利用docx后綴的,核心思想是將docx文件轉(zhuǎn)換成對應(yīng)的XML文件,然后修改XML文件中的內(nèi)容,將其改成Freemarker模板引擎中的占位符,之后通過Freemarker渲染程序?qū)⒄嘉环鎿Q成實(shí)際的數(shù)據(jù),并且將替換之后的模板文件轉(zhuǎn)換成docx文檔,這樣就實(shí)現(xiàn)了根據(jù)模板文件生成Word文檔啦。

  • 注意:freemarker中的占位符是${},例如:這里使用的是【${name}】的形式,那么傳遞的數(shù)據(jù)中就需要有一個叫做【name】的字段。

1.2、制作模板文件

首先創(chuàng)建一個docx后綴的Word文件,文件中的內(nèi)容你自己根據(jù)實(shí)際需求編寫就可以啦,我創(chuàng)建的docx文件內(nèi)容如下所示:

【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板),【W(wǎng)PSP筆記】,word,Java導(dǎo)出Word,Freemarker,Word文檔導(dǎo)出功能,根據(jù)模板文件導(dǎo)出Word文檔

內(nèi)容編輯完成之后,將其另存為XML文件,如下圖所示:

【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板),【W(wǎng)PSP筆記】,word,Java導(dǎo)出Word,Freemarker,Word文檔導(dǎo)出功能,根據(jù)模板文件導(dǎo)出Word文檔

導(dǎo)出XML文件之后,打開這個文件,此時你會看到里面都是XML標(biāo)簽,首先格式化一下,這樣看起來會舒服些,可以檢查一下你的占位符內(nèi)容是否滿足freemarker語法。因?yàn)橛行r候,我們導(dǎo)出的XML文件中,可能會將【${xxx}】分隔成兩行,從而導(dǎo)致占位符失效,所以有時候需要手動修改一下占位符。導(dǎo)出的Word XML文件內(nèi)容大致如下所示:

【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板),【W(wǎng)PSP筆記】,word,Java導(dǎo)出Word,Freemarker,Word文檔導(dǎo)出功能,根據(jù)模板文件導(dǎo)出Word文檔

替換完成之后,我們的Word模板文件就做好啦,這個XML文件就是我們最終需要的Word模板文件,后面需要使用到。

1.3、代碼實(shí)現(xiàn)

(1)引入依賴

如果是SpringBoot的工程,SpringBoot已經(jīng)給我們提供了freemarker的啟動器,這使得我們可以快速的集成freemarker,如下:

<!-- 引入 freemarker 依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

如果是普通的Java工程,可以引入下面的依賴:

<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>

(2)創(chuàng)建Freemarker工具類

引入freemarker依賴之后,就可以使用Freemarker編寫一個工具類,專門用于處理文件的導(dǎo)出和數(shù)據(jù)渲染。


package com.gitcode.demo.util;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.Map;

/**
 * @version 1.0.0
 * @Date: 2023/8/4 15:05
 * @Author ZhuYouBin
 * @Description: Freemarker 工具類
 */
public class FreemarkerUtil {

    /**
     * 使用 Freemarker 生成 Word 文件
     * @param templateName 模板文件路徑名稱
     * @param fileName 生成的文件路徑以及名稱
     * @param dataModel 填充的數(shù)據(jù)對象
     */
    public static void exportWord(String templateName, String fileName, Map<String, Object> dataModel) {
        generateFile(templateName, fileName, dataModel);
    }

    /**
     * 使用 Freemarker 生成指定文件
     * @param templateName 模板文件路徑名稱
     * @param fileName 生成的文件路徑以及名稱
     * @param dataModel 填充的數(shù)據(jù)對象
     */
    private static void generateFile(String templateName, String fileName, Map<String, Object> dataModel) {
        try {
            // 1、創(chuàng)建配置對象
            Configuration config = new Configuration(Configuration.VERSION_2_3_30);
            config.setDefaultEncoding("utf-8");
            config.setClassForTemplateLoading(FreemarkerUtil.class, "/templates");
            // 2、獲取模板文件
            Template template = config.getTemplate(templateName);
            // 3、創(chuàng)建生成的文件對象
            File file = new File(fileName);
            FileOutputStream fos = new FileOutputStream(file);
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos, StandardCharsets.UTF_8));
            // 4、渲染模板文件
            template.process(dataModel, writer);
            // 5、關(guān)閉流
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

(3)測試案例代碼

package com.gitcode.demo.word;

import com.gitcode.demo.util.FreemarkerUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * @version 1.0.0
 * @Date: 2023/8/4 15:26
 * @Author ZhuYouBin
 * @Description: 使用 Freemarker 導(dǎo)出 Word 文件
 */
public class ExportWordDemo {
    public static void main(String[] args) {
        String templateName = "freemarker模板文件.xml";
        String fileName = "導(dǎo)出的word文檔.docx";
        Map<String, Object> dataModel = new HashMap<>();
        dataModel.put("name", "張三");
        dataModel.put("sex", "男");
        dataModel.put("age", "20");
        dataModel.put("address", "xxx地址yyy號");
        // 執(zhí)行導(dǎo)出
        FreemarkerUtil.exportWord(templateName, fileName, dataModel);
    }
}

(4)運(yùn)行效果

運(yùn)行測試案例的代碼,然后在工程目錄下,就可以看到生成的Word文檔,內(nèi)容如下所示:

【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板),【W(wǎng)PSP筆記】,word,Java導(dǎo)出Word,Freemarker,Word文檔導(dǎo)出功能,根據(jù)模板文件導(dǎo)出Word文檔

上面的模板文件只是簡單的文本,你也可以添加表格、圖片等內(nèi)容到模板文件里面,可以使用Freemarker中的循環(huán)標(biāo)簽實(shí)現(xiàn)表格數(shù)據(jù)的自動添加,圖片內(nèi)容是采用base64編碼,所以需要讀取圖片將其轉(zhuǎn)換成base64編碼之后,再渲染到XML文件中,后面的文章在介紹表格和圖片的模板導(dǎo)出。

到此,F(xiàn)reemarker導(dǎo)出Word文檔就介紹完啦。

綜上,這篇文章結(jié)束了,主要介紹如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔。文章來源地址http://www.zghlxwxcb.cn/news/detail-637317.html

到了這里,關(guān)于【導(dǎo)出Word】如何使用Java+Freemarker模板引擎,根據(jù)XML模板文件生成Word文檔(只含文本內(nèi)容的模板)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • freemarker 使用word模板賦值

    freemarker 使用word模板賦值

    這里貼上自己測試的ftl文件 生成的效果 參考: https://blog.csdn.net/weixin_46174854/article/details/116855252 https://blog.csdn.net/weixin_45853881/article/details/129298494 https://blog.csdn.net/qq_42851623/article/details/122879852 https://blog.csdn.net/weixin_45103378/article/details/118395284 https://www.cnblogs.com/ayueC/p/15118381.html

    2024年02月11日
    瀏覽(20)
  • 使用freemarker,數(shù)據(jù)導(dǎo)出word并下載

    1.1 項(xiàng)目背景 最近在開發(fā)一個項(xiàng)目,需要導(dǎo)出一些數(shù)據(jù),然后寫入到word文檔中,然后再導(dǎo)出到本地,這個需求是比較常見的,但是我在網(wǎng)上找了很多資料,都沒有找到一個比較好的解決方案,所以就自己寫了一個,這里分享給大家,希望能幫助到大家。 項(xiàng)目中使用的技術(shù)棧:

    2024年02月05日
    瀏覽(21)
  • Poi實(shí)現(xiàn)根據(jù)word模板導(dǎo)出-圖表篇

    Poi實(shí)現(xiàn)根據(jù)word模板導(dǎo)出-圖表篇

    往期系列傳送門: Poi實(shí)現(xiàn)根據(jù)word模板導(dǎo)出-文本段落篇 (需要完整代碼的直接看最后位置?。。。?前言: 補(bǔ)充Word中圖表的知識: 每個圖表在word中都有一個內(nèi)置的Excel,用于操作數(shù)據(jù)。 內(nèi)置Excel有類別、系列、值三個概念: poi可以獲取word中的圖表對象,通過這個圖表對象來

    2024年02月02日
    瀏覽(37)
  • JAVA利用Freemarker模版動態(tài)生成并導(dǎo)出word文檔(全網(wǎng)最詳細(xì))

    JAVA利用Freemarker模版動態(tài)生成并導(dǎo)出word文檔(全網(wǎng)最詳細(xì))

    公司的某個需求,需要根據(jù)接口的信息生成一份word接口文檔信息并支持導(dǎo)出功能。以前沒做過這種需求,于是搜羅各種資料,最終發(fā)現(xiàn)java利用freemarker模版可以實(shí)現(xiàn)這個功能。 1、需要的環(huán)境 2、創(chuàng)建模板 1)展示word文檔如下所示: 2)將word文檔動態(tài)的參數(shù)替換成占位符,如下

    2024年02月16日
    瀏覽(23)
  • Android 基于POI庫,根據(jù)模板導(dǎo)出word文檔

    Android 基于POI庫,根據(jù)模板導(dǎo)出word文檔

    由于項(xiàng)目需求,需要根據(jù)用戶提供的word模板,填充動態(tài)內(nèi)容生成新的word,為了記錄自己的踩坑日記,記錄一下。 Apache POI 是用Java編寫的免費(fèi)開源的跨平臺的 Java API,Apache POI提供API給Java程序?qū)ξ臋n讀和寫的功能。 這里給出官網(wǎng)鏈接-POI官網(wǎng),同時下載版本也在官網(wǎng)鏈接中,可

    2024年01月18日
    瀏覽(23)
  • freemarker模板引擎詳解以及使用方法

    freemarker模板引擎詳解以及使用方法

    哈嘍!大家好,我是曠世奇才李先生 文章持續(xù)更新,可以微信搜索【小奇JAVA面試】第一時間閱讀,回復(fù)【資料】更有我為大家準(zhǔn)備的福利喲,回復(fù)【項(xiàng)目】獲取我為大家準(zhǔn)備的項(xiàng)目 相關(guān)閱讀 面試官:Zookeeper是什么,它有什么特性與使用場景? 面試官:Redis如何實(shí)現(xiàn)持久化的

    2024年02月09日
    瀏覽(29)
  • SpringBoot整合FreeMarker生成word表格文件(使用FTL模板)

    SpringBoot整合FreeMarker生成word表格文件(使用FTL模板)

    一,什么是FreeMarker,F(xiàn)TL模板? FreeMarker 是一款 模板引擎: 即一種基于模板和要改變的數(shù)據(jù), 并用來生成輸出文本(HTML網(wǎng)頁,電子郵件,配置文件,源代碼等)的通用工具。 它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發(fā)產(chǎn)品的組件。 模板編寫為

    2024年03月24日
    瀏覽(27)
  • 使用freemarker,導(dǎo)出制作好的ftl模板,并寫入數(shù)據(jù)

    1.1 項(xiàng)目背景 最近在開發(fā)一個項(xiàng)目,需要導(dǎo)出一些數(shù)據(jù),然后寫入到word文檔中,然后再導(dǎo)出到本地,這個需求是比較常見的,但是我在網(wǎng)上找了很多資料,都沒有找到一個比較好的解決方案,所以就自己寫了一個,這里分享給大家,希望能幫助到大家。 項(xiàng)目中使用的技術(shù)棧:

    2024年02月05日
    瀏覽(20)
  • java 根據(jù)word模板生成word文件

    java 根據(jù)word模板生成word文件

    Java可以使用Apache POI庫來生成Word文件,并且也可以使用freemarker等模板引擎來實(shí)現(xiàn)根據(jù)Word模板生成Word文件的功能。 下面是一個簡單的示例代碼,可以幫助您快速入門。 模板制作:offer,wps都行,我使用wps進(jìn)行操作? 第一步制作模板 CTRL+f9生成域------》鼠標(biāo)右鍵編輯域------》選

    2024年02月14日
    瀏覽(20)
  • freemarker學(xué)習(xí)+集成springboot+導(dǎo)出word

    freemarker學(xué)習(xí)+集成springboot+導(dǎo)出word

    目錄 一 FreeMarker簡介 二 集成springboot,實(shí)現(xiàn)案例導(dǎo)出 三 常見面試題總結(jié) FreeMarker ?是一款 模板引擎: 即一種基于模板和要改變的數(shù)據(jù), 并用來生成輸出文本(HTML網(wǎng)頁,電子郵件,配置文件,源代碼等)的通用工具。 是一個Java類庫。 在本地磁盤隨便準(zhǔn)備一個文件,內(nèi)容體如下

    2024年02月10日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包