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

Java利用POI-TL模板導(dǎo)出Word文檔

這篇具有很好參考價值的文章主要介紹了Java利用POI-TL模板導(dǎo)出Word文檔。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

poi-tl是什么

poi-tl是一個基于Apache POI的Word模板引擎,也是一個免費開源的Java類庫,你可以非常方便的加入到你的項目中,并且擁有著讓人喜悅的特性。

為什么選擇poi-tl

方案移植性功能性易用性
Poi-tlJava跨平臺Word模板引擎,基于Apache POI,提供更友好的API低代碼,準(zhǔn)備文檔模板和數(shù)據(jù)即可
Apache POIJava跨平臺Apache項目,封裝了常見的文檔操作,也可以操作底層XML結(jié)構(gòu)文檔不全,這里有一個教程:Apache POI Word快速入門
FreemarkerXML跨平臺僅支持文本,很大的局限性不推薦,XML結(jié)構(gòu)的代碼幾乎無法維護
OpenOffice部署OpenOffice,移植性較差-需要了解OpenOffice的API
HTML瀏覽器導(dǎo)出依賴瀏覽器的實現(xiàn),移植性較差HTML不能很好的兼容Word的格式,樣式糟糕-
Jacob、winlibWindows平臺-復(fù)雜,完全不推薦使用

引入依賴

<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId>
    <version>1.10.0</version>
</dependency>


注意,poi-tl是基于poi的,如還引入poi需要注意版本

Java,POI-TL,Apache POI,Word模板引擎

怎么使用

下面介紹一下poi-tl的幾種常見使用方法

1、文本

標(biāo)簽:{{text}}

數(shù)據(jù)模型:

  • String :文本

  • TextRenderData :有樣式的文本

  • HyperlinkTextRenderData :超鏈接和錨點文本

  • Object :調(diào)用 toString() 方法轉(zhuǎn)化為文本

模板:

 Java,POI-TL,Apache POI,Word模板引擎

代碼示例:

    public static void main(String[] args) {

        try {
            /*文本*/
            Map<String, Object> map = new HashMap<>();
            map.put("name", "Sayi");
            map.put("author", new TextRenderData("000000", "Sayi"));
            map.put("link", new HyperlinkTextRenderData("website", "http://deepoove.com"));
            map.put("anchor", new HyperlinkTextRenderData("anchortxt", "anchor:appendix1"));

            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\1.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}


 效果:

Java,POI-TL,Apache POI,Word模板引擎

2、圖片

標(biāo)簽:{{@var}}

數(shù)據(jù)模型:

  • String :圖片url或者本地路徑,默認(rèn)使用圖片自身尺寸

  • PictureRenderData

  • ByteArrayPictureRenderData

  • FilePictureRenderData

  • UrlPictureRenderData

模板:

Java,POI-TL,Apache POI,Word模板引擎

代碼示例:

 public static void main(String[] args) {

        try {

            Map<String, Object> map = new HashMap<>();
            
            /*圖片*/
            map.put("image", "D:\\pic.jpg");       // 指定圖片路徑
            map.put("svg", "https://profile-avatar.yssmx.com/840f4549a5ae4144b243b203900b98c5_qq_38860250.jpg");         // svg圖片
            map.put("image1", Pictures.ofLocal("D:\\pic.jpg").size(120, 120).create());            // 設(shè)置圖片寬高
            map.put("streamImg", Pictures.ofStream(new FileInputStream("D:\\pic.jpg"), PictureType.JPEG)         // 圖片流
                    .size(100, 120).create());
            map.put("urlImg", Pictures.ofUrl("https://profile-avatar.yssmx.com/840f4549a5ae4144b243b203900b98c5_qq_38860250.jpg")
                    .size(100, 100).create());            // 網(wǎng)絡(luò)圖片(注意網(wǎng)絡(luò)耗時對系統(tǒng)可能的性能影響)

            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\2.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


效果:

Java,POI-TL,Apache POI,Word模板引擎

 3、表格

標(biāo)簽:{{#tableTest}}

數(shù)據(jù)模型:

  • TableRenderData

推薦使用工廠 `Tables` 、 `Rows` 和 `Cells` 構(gòu)建表格模型。

模板:

Java,POI-TL,Apache POI,Word模板引擎

代碼示例:

    public static void main(String[] args) {

        try {

            Map<String, Object> map = new HashMap<>();
            /*表格*/
            RowRenderData row0 = Rows.of("姓名", "學(xué)歷").textColor("FFFFFF")
                    .bgColor("4472C4").center().create();
            RowRenderData row1 = Rows.create("李四", "博士");
            map.put("tableTest", Tables.create(row0, row1));

            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\3.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


 效果:

Java,POI-TL,Apache POI,Word模板引擎

 4、列表

標(biāo)簽:{{*var}}

數(shù)據(jù)模型:

  • List<String>

  • NumberingRenderData

推薦使用工廠 `Numberings` 構(gòu)建列表模型。

模板:

Java,POI-TL,Apache POI,Word模板引擎

 代碼示例:

    public static void main(String[] args) {

        try {

            Map<String, Object> map = new HashMap<>();
            /*列表*/
            map.put("listTest", Numberings.create("Plug-in grammar",
                    "Supports word text, pictures, table...",
                    "Not just templates"));
 
            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\4.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


效果:

Java,POI-TL,Apache POI,Word模板引擎

5、嵌套

標(biāo)簽:{{+nested}}

數(shù)據(jù)模型:

  • DocxRenderData

推薦使用工廠 `Includes` 構(gòu)建嵌套模型。

模板:

 Java,POI-TL,Apache POI,Word模板引擎

嵌套子模板:

Java,POI-TL,Apache POI,Word模板引擎

代碼示例:

/**
 * @Title: PoiTlTest
 * @Description:
 * @author: leon
 * @date: 2023/3/14 19:11
 */
public class PoiTlTest {
    public static void main(String[] args) {

        try {

            Map<String, Object> map = new HashMap<>();
            /*嵌套*/
            List<AddrModel> subData = new ArrayList<>();
            subData.add(new AddrModel("Guangdong,China"));
            subData.add(new AddrModel("Shanghai,China"));
            map.put("nested", Includes.ofLocal("D:\\subInTest.docx").setRenderModel(subData).create());
            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\5.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

class AddrModel {
    private String addr;
    public AddrModel(String addr) {
        this.addr = addr;
    }
    // Getter/Setter
}


 效果:

Java,POI-TL,Apache POI,Word模板引擎

6、條件判斷顯示

標(biāo)簽 :

{{?condition}}   需要顯示的內(nèi)容    {{/condition}} 

模板:

Java,POI-TL,Apache POI,Word模板引擎

代碼示例:

   public static void main(String[] args) {

        try {

            Map<String, Object> map = new HashMap<>();
            /*條件判斷顯示*/
            map.put("condition1", false); //不顯示,默認(rèn)值也為false
            map.put("condition1Str","顯示1");
            map.put("condition2", true);
            map.put("condition2Str","顯示2");
            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\6.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


 效果:

Java,POI-TL,Apache POI,Word模板引擎

 7、非空集合循環(huán)

標(biāo)簽也為 :

{{?songs}}   需要遍歷的內(nèi)容  {{/songs}} 

模板:

Java,POI-TL,Apache POI,Word模板引擎

代碼示例:

    public static void main(String[] args) {

        try {

            Map<String, Object> map = new HashMap<>();
            /*非空集合循環(huán)*/
            Map<String, String> map1 = new HashMap<>();
            map1.put("star","周杰倫");
            map1.put("song","---蘭亭序");
            Map<String, String> map2 = new HashMap<>();
            map2.put("star","林俊杰");
            map2.put("song","---江南");
            map.put("songs", Arrays.asList(map1,map2));

            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\7.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


 效果:

Java,POI-TL,Apache POI,Word模板引擎

8、圖表

圖標(biāo)有單系列圖表、多系列圖表、組合圖表多種類型,下面只介紹單系列圖表的使用:

標(biāo)簽:{{var}}

注意:該標(biāo)簽不是直接在模板定義,而是在:圖表區(qū)格式—可選文字—標(biāo)題(新版本Microsoft Office標(biāo)簽位置在:編輯替換文字-替換文字)。

下面是Microsoft Office的操作步驟:

點擊插入,選擇相應(yīng)的圖表

 Java,POI-TL,Apache POI,Word模板引擎

編輯替換文字-替換文字

Java,POI-TL,Apache POI,Word模板引擎

代碼示例:

public static void main(String[] args) {
 try {

            Map<String, Object> map = new HashMap<>();
            /*圖表*/
            //單系列圖表指的是餅圖(3D餅圖)、圓環(huán)圖等。
            map.put("chart1",Charts
                    .ofSingleSeries("綜合測評結(jié)果統(tǒng)計", new String[] { "正常", "異常","其他" })
                    .series("badAndgood", new Integer[] { 19, 17,15})
                    .create());

            XWPFTemplate.compile("D:\\testin.docx").render(map).writeToFile("D:\\8.docx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


 效果:

Java,POI-TL,Apache POI,Word模板引擎

總結(jié)

 上面是poi-tl的一些簡單用例,如對其他功能感興趣的朋友,可以去poi-tl的官網(wǎng)學(xué)習(xí),地址為:http://deepoove.com/poi-tl/文章來源地址http://www.zghlxwxcb.cn/news/detail-485055.html

到了這里,關(guān)于Java利用POI-TL模板導(dǎo)出Word文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java使用poi-tl1.9.1生成Word文檔的幾個小技巧

    Java使用poi-tl1.9.1生成Word文檔的幾個小技巧

    目錄 前言 一、poi-tl簡介 1、什么是poi-tl 2、常見的word生成對比 3、poi-tl功能點 二、poi-tl文檔生成 1、模板準(zhǔn)備 2、目標(biāo)參數(shù)填充 3、生成效果 ?三、可能會遇到的問題 1、混合圖表生成報錯 2、圖表參數(shù)設(shè)置技巧 ?總結(jié) ????????也許在您的工作當(dāng)中會碰到如下的一些場景,比

    2024年02月16日
    瀏覽(24)
  • JAVA poi-tl 制作word模板 表格數(shù)據(jù)行循環(huán) 帶有復(fù)選框勾選的表格

    JAVA poi-tl 制作word模板 表格數(shù)據(jù)行循環(huán) 帶有復(fù)選框勾選的表格

    ????????java項目實際開發(fā)中經(jīng)常會遇到制作word表單且表格數(shù)據(jù)行循環(huán)功能,甚至帶有復(fù)選框勾選功能,本文簡單介紹如何制作模板以及使用poi-tl生成word。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 如果只用到word那么需要導(dǎo)入的依賴如下(本案例只需要如下2個依

    2024年04月12日
    瀏覽(26)
  • 根據(jù)模板動態(tài)生成word(三)使用poi-tl生成word

    根據(jù)模板動態(tài)生成word(三)使用poi-tl生成word

    @ 目錄 一、前言 1、什么是poi-tl 2、官方信息 2.1 源碼倉庫 2.2 中文文檔 2.3 開源協(xié)議 3、poi-tl的優(yōu)勢 3.1 poi-tl和其他模板引擎的對比 3.2 poi-tl Word模板引擎支持的功能 二、基本的使用配置 1、引入依賴 1.1 Maven 1.2 Gradle 2、配置 2.1 新建配置 2.2 標(biāo)簽前后綴替換 2.3 加載模板 2.4 填充數(shù)

    2024年02月13日
    瀏覽(22)
  • poi-tl導(dǎo)出word復(fù)雜表格(單元格合并,生成復(fù)雜表格)

    poi-tl導(dǎo)出word復(fù)雜表格(單元格合并,生成復(fù)雜表格)

    官方文檔地址:http://deepoove.com/poi-tl/ 源碼地址:https://github.com/Sayi/poi-tl poi-tl(poi template language)是Word模板引擎,使用Word模板和數(shù)據(jù)創(chuàng)建很棒的Word文檔。 最近在做項目時候有一個關(guān)于導(dǎo)出Word的文件的需求,需要導(dǎo)出的word文件較大,并且格式比較復(fù)雜,使用poi-tl可以很好的

    2024年02月16日
    瀏覽(23)
  • Spring Boot 中使用 Poi-tl 渲染數(shù)據(jù)并生成 Word 文檔

    本文 Demo 已收錄到 demo-for-all-in-java 項目中,歡迎大家 star 支持!后續(xù)將持續(xù)更新! 產(chǎn)品經(jīng)理急沖沖地走了過來?!脯F(xiàn)在需要將按這些數(shù)據(jù)生成一個 Word 報告文檔,你來安排下」 項目中有這么一個需求,需要將用戶填寫的數(shù)據(jù)填充到一個 Word 文檔中,而這個 Word 文檔是人家給

    2024年02月09日
    瀏覽(22)
  • poi-tl設(shè)置圖片(通過word模板替換關(guān)鍵字,然后轉(zhuǎn)pdf文件并下載)

    poi-tl設(shè)置圖片(通過word模板替換關(guān)鍵字,然后轉(zhuǎn)pdf文件并下載)

    選中圖片右擊? 選擇設(shè)置圖片格式 ? 例如word模板 ? maven依賴 ? 讀取 ?代碼

    2024年02月11日
    瀏覽(92)
  • java 使用POI-TL根據(jù)word模版,生成word文件,含圖片,富文本。

    java 使用POI-TL根據(jù)word模版,生成word文件,含圖片,富文本。

    1.引入mavna坐標(biāo)` 2 .poi-tl-ext插件主要用于富文本內(nèi)容格式在word展現(xiàn) 3.word模版創(chuàng)建 3.具體代碼實現(xiàn) 4.本文的miniourl路徑實質(zhì)為網(wǎng)絡(luò)路徑的文件。

    2024年02月16日
    瀏覽(20)
  • POI-TL制作word

    POI-TL制作word

    本文相當(dāng)于筆記,主要根據(jù)官方文檔Poi-tl Documentation和poi-tl的使用(最全詳解)_JavaSupeMan的博客-CSDN博客文章進行學(xué)習(xí)(上班夠用) 兩個實體類 下邊測試類 word模板 ?生成結(jié)果: ? 如果想生成柱狀圖等,按照官網(wǎng)進行學(xué)習(xí)即可,以上兩篇(官網(wǎng),和博客學(xué)習(xí)夠用)

    2024年02月10日
    瀏覽(23)
  • java利用模板導(dǎo)出word文檔

    java利用模板導(dǎo)出word文檔

    1.依賴: 1.普通數(shù)據(jù) 2.表格 3.1編輯模板:選中區(qū)域,按ctrl+F9,右鍵編輯域,選擇郵件合并,輸入?yún)?shù) 參數(shù)后面加“!”可以避免參數(shù)為null而報錯, ?3.2.代碼:? 3.3展示 1.數(shù)據(jù)類型 布爾型:等價于java的Boolean類型,不同的是不能直接輸出,可轉(zhuǎn)化為字符串輸出 日期型:等價于

    2024年02月04日
    瀏覽(26)
  • 使用poi-tl向word插入圖片、文本、表格行循環(huán)

    使用poi-tl向word插入圖片、文本、表格行循環(huán)

    工作中難免會向word中操作數(shù)據(jù),本文主要介紹poi-tl的使用,先來看效果圖 核心介紹: 標(biāo)簽 1、插入文本標(biāo)簽 : {{var}} 2、插入圖片標(biāo)簽: {{@var}} 操作步驟: 1、引入依賴 2、Java核心代碼 官方網(wǎng)址:http://deepoove.com/poi-tl/ 1、準(zhǔn)備模版,定義好需要的標(biāo)簽 2、查詢模版 3、獲取需要填

    2024年02月05日
    瀏覽(151)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包