導航:
Word文檔生成神器:阿里開源項目poi-tl使用介紹
一. 概述
1.1 適合的場景
- 需要生成word文檔的地方,它都可以進行使用;比如我們常見的,根據頁面,生成相關的word文檔,根據圖表等生成word文檔提供下載等;
1.2 poi-tl的優勢
- 基於模板:操作簡單,方便,易於理解;
- 步驟少,沒有中間轉換環節:模板是Word,生成也是Word,難度低;
- Api易於使用:參考文檔即可分分鐘造出自己的模板和文檔
- 功能豐富,能帶圖片:支持圖片,表格,以及自定義字體,自定義表格,圖片格式大小等的設置,對Word的操控可以精細化;
作者本人目前試過其他的word生成技術,除開收費的技術,對於免費的就目前而言,Poi-tl是生成word的最方便,最簡單,最優的技術選擇之一;
二. poi-tl實例演示:
2.1 使用poi-tl生成word文檔
- 創建一個新word文檔,在新文檔中創建一個文字模板,一個圖片模板,一個表格模板; 如圖所示:
模板都以 {{ }} 包裹,表格以 # 圖片以@ 文字不帶標記
- 在java中使用如下代碼:
- 引入jar包:
<!-- poi-tl start --> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.6.0-beta1</version> </dependency> <!-- end -->
- 運行生成代碼:
public static void main(String[] args) throws Exception { XWPFTemplate template= XWPFTemplate.compile("C:\\Code\\scwx\\cdmtc.command.platform\\cdmtc.parsers\\src\\main\\resources\\poi_tl\\template.docx"). render(new HashMap<String,Object>(){{ /* 文字 */ put("title","我是標題啊"); /* 圖片 */ put("image",new PictureRenderData(100,100,".png", BytePictureUtils.getUrlBufferedImage("https://img-blog.csdnimg.cn/20190627130806508.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MTI4MDQ5,size_16,color_FFFFFF,t_70"))); /* 表格 */ RowRenderData header = RowRenderData.build(new TextRenderData("00CC33", "姓名"), new TextRenderData("00CC33", "學歷")); RowRenderData row0 = RowRenderData.build("張三", "研究生"); RowRenderData row1 = RowRenderData.build("李四", "博士"); RowRenderData row2 = RowRenderData.build("王五", "博士後"); put("table", new MiniTableRenderData(header, Arrays.asList(row0, row1, row2))); }}); FileOutputStream out=new FileOutputStream("C:\\Code\\scwx\\cdmtc.command.platform\\cdmtc.parsers\\src\\main\\resources\\poi_tl\\out_template.docx"); template.write(out); out.flush(); out.close(); template.close(); }
- 引入jar包:
- 生成的word文檔如圖所示:
操作前需要引入jar包;直接創建一個main主方法即可測試;
三. 更多幫助信息
3.1 概述:
- 在工作中,主要生成的就是圖片,表格,和文字了。在 本文章章節二 中分別介紹了三種的最簡單的書寫方式,已經可以滿足絕大多數需求了;
- 如果我們需要動態生成圖片,如動態生成Echarts圖片(統計圖) 可以參考上一篇文章;動態生成Echarts 通過動態生成Echarts圖片,我們可以自動的生成統計圖表,再將統計圖表的圖片和我們所需要的內容和表格融合成word文檔;