Java Word模板POI生成文件

使用 Apache POI 实现 Word 模板动态填充与文件生成

简介

在企业级 Java 应用中,经常需要根据模板动态生成 Word 文档(如合同、报告、通知等)。 Apache POI 是一个强大的 Java 库,支持读写 Microsoft Office 格式文件,其中 XWPF 模块用于处理 .docx 文件。

核心步骤

  1. 准备一个 .docx 模板文件,使用占位符(如 ${name}${date})标记需替换内容。
  2. 使用 Java 读取该模板文件。
  3. 遍历文档中的段落和表格,替换占位符为实际数据。
  4. 将修改后的文档输出为新的 .docx 文件。

示例代码

import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
import java.util.Map;

public class WordTemplateGenerator {
    public static void generateWord(String templatePath, String outputPath, Map<String, String> data) throws Exception {
        try (FileInputStream fis = new FileInputStream(templatePath);
             FileOutputStream fos = new FileOutputStream(outputPath)) {

            XWPFDocument doc = new XWPFDocument(fis);

            // 替换段落中的占位符
            for (XWPFParagraph paragraph : doc.getParagraphs()) {
                replaceInParagraph(paragraph, data);
            }

            // 替换表格中的占位符
            for (XWPFTable table : doc.getTables()) {
                for (XWPFTableRow row : table.getRows()) {
                    for (XWPFTableCell cell : row.getCells()) {
                        for (XWPFParagraph paragraph : cell.getParagraphs()) {
                            replaceInParagraph(paragraph, data);
                        }
                    }
                }
            }

            doc.write(fos);
        }
    }

    private static void replaceInParagraph(XWPFParagraph paragraph, Map<String, String> data) {
        for (XWPFRun run : paragraph.getRuns()) {
            String text = run.getText(0);
            if (text != null) {
                for (Map.Entry<String, String> entry : data.entrySet()) {
                    text = text.replace("${" + entry.getKey() + "}", entry.getValue());
                }
                run.setText(text, 0);
            }
        }
    }
}

依赖配置(Maven)

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.4</version>
</dependency>

注意事项

清华幼儿KinderPower - 专注儿童早期教育与潜能开发 Speaker音响使用说明 - 快速上手指南 电脑如何下载DeepSeek免费版 - 完整教程指南 “years old”的中文意思及用法详解 KOReader字体下载 - 免费获取适用于KOReader的优质电子书字体 spacedesk怎么卸载 - 完整卸载指南 ToDesk远程官网 - 安全高效的远程控制软件 spacedesk安卓使用指南 - 将安卓设备变身为第二屏幕 RoomDoor密室逃脱 - 沉浸式解谜冒险体验 ThinkPad P52 更换主板价格参考 | 维修费用指南 最值得买的二手ThinkPad推荐 - 选购指南与性价比分析 Desktop笔记本专题 - 高性能与便携的完美结合 DeepSeek翻译功能在哪?使用指南与常见问题解答 华硕Desktop系列叫啥?全面解析华硕台式机产品线命名 Android中文专题 - 全面了解安卓系统与中文支持 ToDesk远程控制软件 - 高效安全的远程桌面工具 关于DeepSeek的作文800字 - 探索人工智能写作新境界 ThinkStation 专业工作站 - 高性能计算解决方案 “take the place of” 与 “in place of” 的区别与用法 桌面电脑专题 | 探索高性能台式机与工作站 ThinkPad维修服务网点查询 - 官方授权服务中心 今天五行穿衣每日分享 - 古法智慧,现代生活 苹果手机为什么下载不了DeepSeek?原因与解决方法 DeepSeek中文谐音:深度探索AI语言模型的趣味解读 联想和ThinkPad哪个质量好?深度对比分析 Look at the Picture - 观察图片,发现细节 SolidWorks焊件库位置详解 - 快速定位与自定义指南 未来一周穿衣指南 - 复古时尚搭配建议 DeepSeek禁忌词汇指南 - 避免AI内容风险 knee 和 knees 的区别 - 英语语法专题解析 Paradise 歌曲完整版 - Coldplay经典歌曲在线欣赏 联想和ThinkPad区别:品牌关系与产品定位详解 Todesk下载 - 官方最新版远程控制软件免费下载 五行日柱查询 - 探索您的生辰八字命理 联想 ThinkPad X1 Yoga 评测与介绍 | 商务二合一笔记本 穿衣五行今日指南 - 每日五行穿衣搭配建议 Koreader怎么换字体 - 详细教程与设置指南 desktop中文叫什么?详解“桌面”的由来与用法 Have Not 与 Don't Have 的用法区别 - 英语语法基础 DeepSeek官网入口下载安装 - 获取最新版DeepSeek桌面与移动端应用 ThinkPad自带一键重装系统使用指南 ThinkPad标志上的小红灯:TrackPoint的传奇 Word 2010文档扩展名的默认类型是什么?全面解析.docx格式 DeepSeek怎么生成软件 - 使用AI快速开发应用程序指南 ThinkPad E550内存条型号与升级指南 spacedesk电脑连电脑使用指南 - 跨设备屏幕扩展解决方案 ThinkPad笔记本电脑尺寸大小对比表 - 主流型号规格一览 DeepSeek怎么复制表格 - 完整操作指南 DeepSeek简介 - 深度探索AI大模型技术 TwoRooms - 极简双空间生活美学专题 如何打开VSD格式文件?完整方法指南 ThinkPad T系列和P系列哪个好?详细对比选购指南 instead 搭配用法详解 - 英语学习专题 ThinkPad电池查询工具 今日穿衣最旺颜色 - 复古时尚指南 C盘Desktop文件夹在哪里?Windows桌面路径详解 DeepSeek官方下载入口 - 安全可靠的AI大模型工具 "in this way" 与 "by this way" 的区别与用法详解 ThinkPad T440 升级固态硬盘详细指南 二手ThinkPad耐用吗?真实耐用性分析 日子对应五行表 - 中国传统五行文化专题 电脑ToDesk在哪里?ToDesk远程控制软件安装与使用指南 联想 ThinkPad E15 笔记本电脑 - 商务办公首选 Snapshot - 轻量级截图工具 | 简洁高效的屏幕截图软件 SolidWorks如何解除锁定零部件 - 操作指南与技巧 Desktops - Understanding and Usage Guide instead 的名词形式及相关用法解析 Darkseid 专题页 - DC宇宙最强反派解析 英语“tomorrow”的缩写是什么?常见用法与注意事项 AI与DeepSeek的区别:全面解析人工智能与DeepSeek大模型 ThinkPad T480 拆机与升级完全指南 暗黑血统:战神版(Darksiders: Warmastered Edition)专题 Power音乐 - 感受节奏的力量 | 高品质音乐专题站 The Ruler and the Pen – Tools of Precision and Expression 二手ThinkPad最建议买哪一款?性价比与可靠性分析 ThinkPad美版电脑查询指南 - 型号、配置与购买建议 AnyDesk安卓破解版 - 安全使用指南与风险提示 whatdoyoudo翻译中文 - 含义、用法与例句详解 Tomorrow是什么牌子?品牌介绍与常见问题解答 每日穿衣指南 - 复古时尚搭配建议 DeepSeek官网入口 - 快速访问与使用指南 2021年9月9日穿衣五行指南 - 古典五行穿衣搭配 安装DeepSeek - 快速上手指南 DeepSleep2 APK下载 - 安卓睡眠辅助应用官方下载页面 howold怎么念 - 英语发音与用法详解 DeepSeek教程PDF下载 - 免费获取完整使用指南 ThinkPad X1 Nano 接口图解 | 端口位置与功能详解 联想ThinkPad有键盘灯吗?详细解答及使用方法 DeepSeek能出图吗?功能解析与使用指南 Doors 100道门下载 - 免费安卓/iOS解谜游戏官方下载 Darknet 下载 - 开源神经网络框架 Paradise爱情暗示 - 解读心动信号与浪漫表达 tomorrow发什么音标?英式美式发音详解 - 英语学习指南 ThinkPad X1 Nano 专题 - 超轻薄商务笔记本 howareyou 和 howareyoudoing 的区别 - 英语表达指南 她十二岁了 - 成长故事与教育指南 DeepSeek的创始人是谁?深度解析DeepSeek背后的核心人物 Udesk安卓版下载 - 官方最新版APK免费获取 DeepSeek解除R18限制的咒语方法指南 ThinkPad L13 配置详情 - 技术规格与参数