java使用poi-tl自定義word模板導出

文章目錄

  • 概要
  • 整體架構流程
  • 創建word模板
  • 核心代碼
  • 導出結果

概要

在軟件開發領域,自定義Word模板的使用是導出格式化數據的一種常見做法。poi-tl(Apache POI Template Language)作為一款基于廣受認可的Apache POI庫的Word模板引擎,它以純Java組件的形式提供服務,確保了跨平臺的兼容性。poi-tl以其簡潔高效的代碼著稱,不僅易于集成,還通過其插件機制實現了功能的高度可擴展性,允許開發者根據項目需求靈活定制。這一特性使得poi-tl成為處理Word文檔生成任務時的一個強有力工具。

整體架構流程

官網:poi-tl

 <!--    POI 依賴 使用xlsx xml的格式(即XSSFWorkbook)   --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency><!--     poi模板導入,主力包      --><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>

創建word模板

核心代碼

       try {String pictureUrl = "D:\\file\\test\\image\\bigPicture10.jpeg";if (pictureUrl != null && !pictureUrl.isEmpty()) {PictureRenderData picture = Pictures.ofLocal(pictureUrl).size(40, 30).create();finalMap.put("signPicture", picture);}} catch (Exception e) {e.printStackTrace();}// 從classpath加載Word模板文件到臨時文件try (InputStream inputStream = TestWord.class.getClassLoader().getResourceAsStream("template.docx")) {if (inputStream == null) {throw new RuntimeException("無法找到模板文件:template.docx");}// 創建一個臨時文件用于XWPFTemplate處理Path tempFilePath = Files.createTempFile("word-template-", ".docx");Files.copy(inputStream, tempFilePath, StandardCopyOption.REPLACE_EXISTING);// 使用臨時文件作為模板File wordTemplate = tempFilePath.toFile();LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();Configure build = Configure.builder().bind(policy, "workList").build();XWPFTemplate render = XWPFTemplate.compile(wordTemplate, build).render(finalMap);// 定義輸出路徑String outputPath = "D:\\file\\htht\\project\\260\\開發\\output.docx"; // 修改為期望的輸出文件路徑File outputFile = new File(outputPath);try {if (!outputFile.getParentFile().exists()) {outputFile.getParentFile().mkdirs(); // 確保父目錄存在}render.writeToFile(outputFile.getAbsolutePath());System.out.println("Word文檔成功導出到: " + outputPath);} catch (IOException e) {throw new RuntimeException("無法寫入文件: " + e.getMessage(), e);}// 刪除臨時文件(可選)Files.deleteIfExists(tempFilePath);} catch (IOException e) {throw new RuntimeException("讀取模板文件失敗: " + e.getMessage(), e);}

?導出結果

資源提取:https://download.csdn.net/download/yy12345_6_/90275767

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66351.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IDEA2023版中TODO的使用

介紹&#xff1a;TODO其實本質上還是注釋&#xff0c;只不過加上了TODO這幾個字符&#xff0c;可以讓使用者快速找到。 注意&#xff1a;在類、接口等文件中&#xff0c;注釋是使用// 即&#xff1a;// TODO 注釋內容 在配置文件中&#xff0c;注釋是使用# 即&#xff1a;# TO…

項目練習:若依管理系統字典功能-Vue前端部分

文章目錄 一、情景說明二、若依Vue相關代碼及配置1、utils代碼2、components組件3、api接口代碼4、Vuex配置5、main.js配置 三、使用方法1、html部分2、js部分 一、情景說明 我們在做web系統的時候&#xff0c;肯定會遇到一些常量選擇場景。 比如&#xff0c;性別&#xff1a;…

LabVIEW開發X光圖像的邊緣檢測

在醫療影像處理中&#xff0c;X光圖像的分析對于骨折、腫瘤等病變的檢測非常重要。X光圖像中包含許多關鍵信息&#xff0c;然而&#xff0c;由于圖像噪聲的干擾&#xff0c;直接從圖像中提取有用的特征&#xff08;如骨折的邊緣&#xff09;變得非常困難。邊緣檢測作為圖像處理…

【CC2640R2F】香瓜CC2640R2F之SPI讀寫W25Q80

本文最后修改時間&#xff1a;2022年01月08日 10:45 一、本節簡介 本節以simple_peripheral工程為例&#xff0c;介紹如何使用SPI讀寫W25Q80&#xff08;外部flash&#xff09;。 二、實驗平臺 1&#xff09;CC2640R2F平臺 ①協議棧版本&#xff1a;CC2640R2 SDK v1.40.00.4…

光譜相機如何還原色彩

多光譜通道采集 光譜相機設有多個不同波段的光譜通道&#xff0c;可精確記錄每個波長的光強信息。如 8 到 16 個甚至更多的光譜通道&#xff0c;每個通道負責特定波長范圍的光信息記錄。這使得相機能分辨出不同光譜組合產生的相同顏色感知&#xff0c;而傳統相機的傳感器通常只…

C# 獲取PDF文檔中的字體信息(字體名、大小、顏色、樣式等

在設計和出版行業中&#xff0c;字體的選擇和使用對最終作品的質量有著重要影響。然而&#xff0c;有時我們可能會遇到包含未知字體的PDF文件&#xff0c;這使得我們無法準確地復制或修改文檔。獲取PDF中的字體信息可以解決這個問題&#xff0c;讓我們能夠更好地處理這些文件。…

C++ 的 CTAD 與推斷指示(Deduction Guides)

1 類模板參數推導&#xff08;CTAD&#xff09; 1.1 曲線救國 ? CTAD 的全稱是類模板參數推導&#xff08;Class Template Argument Deduction&#xff09;&#xff0c;它允許在實例化類模板時&#xff0c;根據構造函數的參數類型自動推導模板參數&#xff0c;從而避免顯式指…

Shell正則表達式與文本處理三劍客(grep、sed、awk)

一、正則表達式 Shell正則表達式分為兩種&#xff1a; 基礎正則表達式&#xff1a;BRE&#xff08;basic regular express&#xff09; 擴展正則表達式&#xff1a;ERE&#xff08;extend regular express&#xff09;&#xff0c;擴展的表達式有、?、|和() 1.1 基本正則表…

掌握 React 高階組件與高階函數:構建可復用組件的新境界

一、引言 在 React 開發中&#xff0c;代碼復用性和邏輯分離是提高開發效率和維護性的重要手段。高階組件&#xff08;Higher-Order Component, HOC&#xff09;和高階函數&#xff08;Higher-Order Function, HOF&#xff09;是實現這一目標的兩種強大工具。本文將詳細介紹這…

arcgis提取不規則柵格數據的矢量邊界

效果 1、準備數據 柵格數據:dem或者dsm 2、柵格重分類 分成兩類即可 3、新建線面圖層 在目錄下選擇預先準備好的文件夾,點擊右鍵,選擇“新建”→“Shapefile”,新建一個Shapefile文件。 在彈出的“新建Shapefile”對話框內“名稱”命名為“折線”,“要素類型”選…

阿里云通義實驗室自然語言處理方向負責人黃非:通義靈碼2.0,邁入 Agentic AI

通義靈碼是基于阿里巴巴通義大模型研發的AI 智能編碼助手&#xff0c;在通義靈碼 1.0 時代&#xff0c;我們針對代碼的生成、補全和問答&#xff0c;通過高效果、低時延&#xff0c;研發出了國內最受歡迎的編碼助手。 在通義靈碼 2.0 發布會上&#xff0c;阿里云通義實驗室自然…

Open3D 最小二乘擬合平面(直接求解法)【2025最新版】

目錄 一、算法原理二、代碼實現三、結果展示本文由CSDN點云俠原創,原文鏈接。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲與GPT。 博客長期更新,本文最近更新時間為:2025年1月18日。 一、算法原理 平面方程的一般表達式為:

超標量處理器設計2-cache

1. cache 介紹 影響Cache缺失的情況有3種&#xff1a; Compulsory: 第一次被訪問的指令或者數據肯定不會在cache中&#xff0c;需要通過預取來減少這種缺失Capcity: Cache容量越大&#xff0c;缺失就可以更少, 程序頻繁使用的三個數據來源于3個set&#xff0c; 但是&#xff…

linux 安裝PrometheusAlert配置釘釘告警

在 Linux 上安裝 PrometheusAlert 并配置釘釘告警的步驟如下: 1. 準備工作 釘釘機器人: 在釘釘群中創建一個機器人,獲取 Webhook URL。示例 Webhook URL:https://oapi.dingtalk.com/robot/send?access_token=your_dingtalk_token。PrometheusAlert 安裝包: 從 Prometheus…

當PHP遇上區塊鏈:一場奇妙的技術之旅

PHP 與區塊鏈的邂逅 在技術的廣袤宇宙中&#xff0c;區塊鏈技術如同一顆耀眼的新星&#xff0c;以其去中心化、不可篡改、透明等特性&#xff0c;掀起了一場席卷全球的變革浪潮。眾多開發者懷揣著對新技術的熱忱與探索精神&#xff0c;紛紛投身于區塊鏈開發的領域&#xff0c;試…

vscode的安裝與使用

下載 地址&#xff1a;https://code.visualstudio.com/ 安裝 修改安裝路徑&#xff08;不要有中文&#xff09; 點擊下一步&#xff0c;創建桌面快捷方式&#xff0c;等待安裝 安裝中文插件 可以根據自己的需要安裝python和Jupyter插件

32單片機綜合應用案例——物聯網(IoT)環境監測站(四)(內附詳細代碼講解!!!)

無論你身處何種困境&#xff0c;都要堅持下去&#xff0c;因為勇氣和毅力是成功的基石。不要害怕失敗&#xff0c;因為失敗并不代表終結&#xff0c;而是為了成長和進步。相信自己的能力&#xff0c;相信自己的潛力&#xff0c;相信自己可以克服一切困難。成功需要付出努力和堅…

淺談云計算19 | OpenStack管理模塊 (上)

OpenStack管理模塊&#xff08;上&#xff09; 一、操作界面管理架構二、認證管理2.1 定義與作用2.2 認證原理與流程2.2.1 認證機制原理2.2.2 用戶認證流程 三、鏡像管理3.1 定義與功能3.2 鏡像服務架構3.3 工作原理與流程3.3.1 鏡像存儲原理3.3.2 鏡像檢索流程 四、計算管理4.…

RK3568 Android11 鎖屏界面屏蔽下拉狀態欄

參考文章&#xff1a; Android R鎖屏界面屏蔽下拉狀態欄_pulseexpansionhandler-CSDN博客 前提增加狀態欄控制顯隱屬性&#xff0c;以下面文章為前提補充功能 RK3568 Android11 狀態欄和導航欄增加顯示控制功能-CSDN博客 修改文件位置&#xff1a; frameworks/base/package…

彩色圖像面積計算一般方法及MATLAB實現

一、引言 在數字圖像處理中&#xff0c;經常需要獲取感興趣區域的面積屬性&#xff0c;下面給出圖像處理的一般步驟。 1.讀入的彩色圖像 2.將彩色圖像轉化為灰度圖像 3.灰度圖像轉化為二值圖像 4.區域標記 5.對每個區域的面積進行計算和顯示 二、程序代碼 %面積計算 cle…