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

輕松學(xué)會Java導(dǎo)出word,一篇文章就夠了!

這篇具有很好參考價值的文章主要介紹了輕松學(xué)會Java導(dǎo)出word,一篇文章就夠了!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

很多小伙伴在工作中,可能又這樣一個需求:根據(jù)word模板去填充數(shù)據(jù),變成我們想要的word文檔,這是很多剛進(jìn)入職場的小白都會碰到的需求。

當(dāng)遇上這種需求,我們可以通過這篇文章要講的poi-tl 來做處理。

導(dǎo)入依賴

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

填充文本

 首先,我們需要先準(zhǔn)備一個word文檔,必須是.docx結(jié)尾的哦。

我們先在指定的位置創(chuàng)建一個測試文檔。我這邊直接在springboot中的templates目錄下創(chuàng)建一個名為test1.docx的文件。
java生成word,java,word,開發(fā)語言
java生成word,java,word,開發(fā)語言

 這里需要注意:對于文本數(shù)據(jù)而言,動態(tài)填充的數(shù)據(jù),用{{}}包裹即可。
   //掌握如何填充文本類型數(shù)據(jù)
    @Test
    void contextLoads() throws IOException {
      String path="D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\test1.docx";
      //第一步:讀取模板
        XWPFTemplate compile = XWPFTemplate.compile(path);
      //第二步:創(chuàng)建數(shù)據(jù),用于把我們模板中的{{}}包裹的變量替換掉,map中保存的key一定要和模板中的變量保持一致
        HashMap<String, Object> map = new HashMap<>();
        map.put("date", LocalDate.now());
        compile.render(map);
        //第三步:把設(shè)置的參數(shù)寫入,并生成新的word文檔
        compile.writeToFile("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\text.docx");
      compile.close();
    }

執(zhí)行上面代碼,會發(fā)現(xiàn)我們多了一個text.docx 的文檔,打開看,發(fā)現(xiàn)數(shù)據(jù)已經(jīng)被填充了。
java生成word,java,word,開發(fā)語言

填充圖片

還是一樣,我們創(chuàng)建一個用于填充數(shù)據(jù)的模板。不過對于文本而言,填充設(shè)置的參數(shù)需要用{{@}}來包含住。

我們先在指定的位置創(chuàng)建一個測試文檔。我這邊直接在springboot中的templates目錄下創(chuàng)建一個名為imgTemplate.docx的文件。
java生成word,java,word,開發(fā)語言
imgTemplate文件打開是這樣的:

java生成word,java,word,開發(fā)語言
當(dāng)執(zhí)行下面通過poi-tl實現(xiàn)的填充圖片代碼:

    @Test
    void  test2() throws IOException {
        String path="D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\imgTemplate.docx";
        //第一步:讀取模板
        XWPFTemplate compile = XWPFTemplate.compile(path);
        //第二步:創(chuàng)建數(shù)據(jù),用于把我們模板中的{{}}包裹的變量替換掉,map中保存的key一定要和模板中的變量保持一致
        HashMap<String, Object> map = new HashMap<>();
        //本地圖片
        //120,120:代表設(shè)圖片的長寬
        map.put("img1",new PictureRenderData(120,120,"D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\img.png"));
        //流圖片
        map.put("img2",new PictureRenderData(120,120,".png",new FileInputStream("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\img.png")));

        //網(wǎng)絡(luò)圖片
        map.put("img3", new PictureRenderData(100, 100, ".jpg", BytePictureUtils.getUrlBufferedImage("https://gss0.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/314e251f95cad1c8ba1e530c7d3e6709c93d5177.jpg")));

        compile.render(map);
        compile.writeToFile("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\Img.docx");
        compile.close();
    }

打開img.docx文件,發(fā)現(xiàn)圖片已經(jīng)被填充進(jìn)去了
java生成word,java,word,開發(fā)語言

填充表格

  填充表格的時候,需要使用{{*var}}來填充表格。

還是一樣,在指定的位置創(chuàng)建一個測試文檔。我這邊直接在springboot中的templates目錄下創(chuàng)建一個名為TableTemplate.docx的文件。而文件中的內(nèi)容為:
java生成word,java,word,開發(fā)語言

然后,編寫測試方法,執(zhí)行以下代碼,進(jìn)行表格的填充

    @Test
    public void test() throws IOException {
        String path="D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\tableTemplate.docx";
        //第一步:讀取模板
        XWPFTemplate compile = XWPFTemplate.compile(path);
 //第二步:創(chuàng)建數(shù)據(jù),用于把我們模板中的{{}}包裹的變量替換掉,map中保存的key一定要和模板中的變量保持一致
      HashMap<String, Object> map = new HashMap<>();
      //設(shè)置單元格,表頭
        RowRenderData header = RowRenderData.build(new TextRenderData("6495ED", "姓名"), new TextRenderData("6495ED", "學(xué)歷"));
      //設(shè)置表內(nèi)容,如果在實際應(yīng)用中,傳入一個list集合或者數(shù)組,方可用foreach進(jìn)行循環(huán)填充

        RowRenderData row0 = RowRenderData.build("張三", "研究生");
        RowRenderData row1 = RowRenderData.build(new TextRenderData("李四"), new TextRenderData("博士"));
        RowRenderData row2 = RowRenderData.build("王五", "博士后");

        map.put("table", new MiniTableRenderData(header, Arrays.asList(row0, row1, row2)));
        compile.render(map);
        compile.writeToFile("D:\\QQ_File\\1719036792\\FileRecv\\tuanfei\\src\\main\\resources\\templates\\table.docx");
        compile.close();
    }

執(zhí)行成功后,在生成文件位置找到對應(yīng)的文件,打開查看:
java生成word,java,word,開發(fā)語言
執(zhí)行成功。。。。。

在實際開發(fā)中,我們經(jīng)常會使用到Word的導(dǎo)出和數(shù)據(jù)填充。使用poi-tl,我們可以很輕松的就能對word文件進(jìn)行操作。我寫的這篇文章中只對我們常用的三種類型進(jìn)行講解。當(dāng)我們需要更加了解和使用的時候,還是需要查看官方文檔能更一步的了解和掌握poi-tl。

POI-TL1.5.x的文檔地址:點擊進(jìn)入文檔地址文章來源地址http://www.zghlxwxcb.cn/news/detail-732680.html

到了這里,關(guān)于輕松學(xué)會Java導(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • 一篇文章學(xué)會高級IO

    一篇文章學(xué)會高級IO

    IO是數(shù)據(jù)在傳輸時的一種動作描述,分為輸入數(shù)據(jù)(I)和輸出數(shù)據(jù)(O)兩種動作。和一般而言,IO都需要維護(hù)一個收發(fā)數(shù)據(jù)的緩沖區(qū),例如read、recv函數(shù)和write、send函數(shù),它們的數(shù)據(jù)緩沖區(qū)都是由系統(tǒng)幫助創(chuàng)建的。對于C語言中常用到的scanf函數(shù)和printf函數(shù),同樣不需要用戶自

    2024年02月05日
    瀏覽(28)
  • RabbitMQ看這一篇文章就夠了

    RabbitMQ看這一篇文章就夠了

    第1節(jié) MQ是什么 第2節(jié) MQ 的主要特點 第3節(jié) RabbitMQ介紹 官網(wǎng)地址 第1節(jié) 安裝步驟 ? 第2節(jié) 用戶管理 第1節(jié) RabbitMQ的整體架構(gòu)圖 架構(gòu) ? Producer Exchange Queue Customer 一個消息(message)從開始到結(jié)束的過程 第1節(jié) 原理圖 HelloWorld ? P: producer 生產(chǎn)者 C: consumer 消費者 中間紅色的部分是一個隊

    2024年02月08日
    瀏覽(84)
  • Docker詳細(xì)教程,一篇文章就夠了

    Docker詳細(xì)教程,一篇文章就夠了

    假設(shè)你們公司正在秘密研發(fā)下一個“今日頭條”APP,我們姑且稱為明日頭條,程序員自己從頭到尾搭建了一套環(huán)境開始寫代碼,寫完代碼后程序員要把代碼交給測試同學(xué)測試,這時測試同學(xué)開始從頭到尾搭建這套環(huán)境,測試過程中出現(xiàn)問題程序員也不用擔(dān)心,大可以一臉無辜

    2024年02月08日
    瀏覽(37)
  • @Reference注解,看這一篇文章就夠了。

    ????????@Reference是Dubbo框架中的注解,用于注入遠(yuǎn)程服務(wù)的引用。 ????????在Dubbo框架中,服務(wù)提供者和服務(wù)消費者是通過RPC方式進(jìn)行通信的。服務(wù)消費者需要通過Dubbo框架來獲取服務(wù)提供者的實例,通過這個實例來調(diào)用服務(wù)提供者的方法。當(dāng)服務(wù)消費者在代碼中需要調(diào)

    2023年04月25日
    瀏覽(25)
  • MapReduce的工作原理這篇文章就夠了

    MapReduce是一種分布式計算模型,用于處理大規(guī)模數(shù)據(jù)集。它將大規(guī)模數(shù)據(jù)集分成小的數(shù)據(jù)塊,然后在分布式計算集群上并行處理這些數(shù)據(jù)塊。MapReduce模型由Google公司提出,并在Hadoop等開源框架中得到了廣泛應(yīng)用。 MapReduce模型包含兩個階段:Map階段和Reduce階段。 Map階段 在Map階

    2024年02月06日
    瀏覽(30)
  • 搞懂TVS管,有這篇文章就夠了

    摘要:本文主要介紹TVS的工作原理、關(guān)鍵參數(shù)和選型。 TVS(Transient Voltage Suppressors,瞬態(tài)電壓抑制器)又稱雪崩擊穿二極管,是一種高效電路保護(hù)器件,主要是保護(hù)電路不受瞬態(tài)高壓尖峰脈沖(靜電或雷擊浪涌)的沖擊。 TVS是采用半導(dǎo)體工藝制成的單個PN結(jié)或多個PN結(jié)集成的器件,

    2023年04月08日
    瀏覽(30)
  • 調(diào)教ChatGpt看這一篇文章就夠了

    ChatGPT是OpenAI發(fā)布的基于GPT-3.5架構(gòu)的大型語言模型,可用于各種自然語言處理任務(wù),包括文本生成、對話系統(tǒng)、文本分類等。本文將為讀者提供一份ChatGPT調(diào)教教程,幫助讀者了解如何訓(xùn)練自己的ChatGPT模型,以便更好地滿足自己的需求。 1. 安裝必要的軟件和工具 在開始之前,

    2024年02月01日
    瀏覽(30)
  • RabbitMQ入門到實戰(zhàn)一篇文章就夠了

    RabbitMQ入門到實戰(zhàn)一篇文章就夠了

    課程內(nèi)容 認(rèn)識RabbitMQ 安裝RabbitMQ SpringBoot使用RabbitMQ 其他特性 1.RabbitMQ認(rèn)識 1.1.RabbitMQ是什么 MQ全稱為Message Queue,即消息隊列. 它也是一個隊列,遵循FIFO原則 。RabbitMQ是由erlang語言開發(fā),基于AMQP(Advanced Message Queue Protocol高級消息隊列協(xié)議)協(xié)議實現(xiàn)的消息隊列,它是一種應(yīng)用程

    2024年03月09日
    瀏覽(27)
  • JavaWeb入門看這一篇文章就夠了

    JavaWeb入門看這一篇文章就夠了

    第1節(jié) 什么是web 第2節(jié) 什么是JavaWeb ? 第1節(jié) JavaWeb服務(wù)器是什么 第2節(jié) 常見的JavaWeb服務(wù)器介紹 Tomcat當(dāng)前最流行的web容器(免費) jetty(免費) Weblogic(收費) 第3節(jié) Tomcat服務(wù)器 tomcat服務(wù)器介紹 tomcat的目錄結(jié)構(gòu) ? tomcat的常用命令 tomcat的用戶管理 tomcat的服務(wù)配置管理 在一臺服務(wù)器上配

    2024年02月03日
    瀏覽(26)
  • DevOps是什么?只看這篇文章就夠了!

    DevOps是什么?只看這篇文章就夠了!

    作者:沈洲 原文鏈接:DevOps是什么?只看這篇文章就夠了!-云社區(qū)-華為云 作為一個熱門的概念,DevOps這個名詞在程序員社區(qū)里頻頻出現(xiàn),備受技術(shù)大佬們的追捧。甚至網(wǎng)絡(luò)上有了“南無DevOps”的戲言(南無在梵語的意思是“皈依”),也側(cè)面反映了DevOps的風(fēng)靡。 然而,一

    2024年02月21日
    瀏覽(17)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包