Java?poi-tl根據(jù)模板生成word文件的完整指南
基礎(chǔ)操作
本質(zhì)上是通過占位符進行內(nèi)容替換
本文章僅操作docx格式的文檔
- .doc (Word 97-2003): 使用OLE2格式,對應(yīng)POI的 HWPF 組件
- .docx (Word 2007+): 使用OOXML格式,對應(yīng)POI的 XWPF 組件
基礎(chǔ)操作_模板部分

將模板放入resources 資源目錄下,自定義文件夾中,例如:templet/word_template/demo_template.docx
代碼部分
maven
<!-- 用于生成word版報告 --> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.1</version> </dependency>
處理過程
// 模板文件
String templateFilePath = "templet/word_template/demo_template.docx";
// 讀取模板文件
InputStream templateIn = getClass().getClassLoader().getResourceAsStream(templateFilePath);
// 插入文本數(shù)據(jù)
Map<String, Object> templateData = new HashMap<String, Object>();
templateData.put("str1", "替換成功");
// 生成模板文件
XWPFTemplate template = XWPFTemplate.compile(templateIn).render(templateData);
// 寫入數(shù)據(jù)并關(guān)閉流
template.writeAndClose(new FileOutputStream("D:/output.docx"));
templateIn.close();
此時,文件便下載到了 D:/output.docx 的位置。
若為Web
public void pgdExport(HttpServletResponse response) throws IOException {
// 模板文件
String templateFilePath = "templet/word_template/demo_template.docx";
// 讀取模板文件
InputStream templateIn = getClass().getClassLoader().getResourceAsStream(templateFilePath);
// 插入文本數(shù)據(jù)
Map<String, Object> templateData = new HashMap<String, Object>();
templateData.put("str1", "替換成功");
// 生成模板文件
XWPFTemplate template = XWPFTemplate.compile(templateIn).render(templateData);
ServletOutputStream outputStream = response.getOutputStream();
// 防止文件以及文件名亂碼
String fileName = "文件名.docx";
String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"; filename*=utf-8''" + encodedFileName);
response.setCharacterEncoding("UTF-8");
// 寫入數(shù)據(jù)并關(guān)閉流
template.writeAndClose(outputStream);
templateIn.close();
}
// 前端js代碼 // 如果此接口需要被鑒權(quán),那么需要后端同時從Params中獲取token,然后前端拼接token傳遞,否則此方法無法使用 // 需要注意跨域問題 window.location.href = '你的接口地址';
插入圖片
模板:占位符格式是{{@xxxx}}

代碼
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureType;
import com.deepoove.poi.data.Pictures;
templateData.put("img", Pictures.ofStream(in, PictureType.JPEG).size(300, 300).create());
參考文章:Java poi-tl根據(jù)模版生成word文件并插入文字、圖片、表格、圖表
到此這篇關(guān)于Java poi-tl根據(jù)模板生成word文件的完整指南的文章就介紹到這了,更多相關(guān)Java poi-tl模板生成word內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java使用Spire.Doc for Java實現(xiàn)自動化合并Word文檔
在日常辦公和軟件開發(fā)中,我們經(jīng)常會遇到需要將多個 Word 文檔合并成一個的需求,本文將聚焦于 Spire.Doc for Java 這一功能強大的庫,為您提供詳細的教程和實用的代碼示例,希望對大家有所幫助2025-12-12
Java線程使用同步鎖交替執(zhí)行打印奇數(shù)偶數(shù)的方法
這篇文章主要介紹了Java線程使用同步鎖交替執(zhí)行打印奇數(shù)偶數(shù)的方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
超級詳細Java?JDK環(huán)境配置教程(Mac?版)
這篇文章詳細講解了在MacOS上安裝JDK及配置Java環(huán)境的步驟,包括下載JDK安裝包、安裝JDK、查詢安裝路徑以及配置環(huán)境變量,旨在為初學(xué)者提供一份保姆級的安裝指南,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2024-10-10
java應(yīng)用開發(fā)之JVM運行時內(nèi)存分析
這篇文章主要介紹了java應(yīng)用開發(fā)之JVM運行時內(nèi)存,文中附含圖文示例內(nèi)容分析非常簡要,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
java爬蟲之使用HttpClient模擬瀏覽器發(fā)送請求方法詳解
這篇文章主要介紹了java爬蟲之使用HttpClient模擬瀏覽器發(fā)送請求方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Windows下使用IDEA搭建Hadoop開發(fā)環(huán)境的詳細方法
這篇文章主要介紹了Windows下使用IDEA搭建Hadoop開發(fā)環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
使用Spring自定義實現(xiàn)IOC和依賴注入(注解方式)
這篇文章主要介紹了使用Spring自定義實現(xiàn)IOC和依賴注入(注解方式),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08

