Java Word模板POI生成文件

使用 Apache POI 基于 Word 模板动态生成文档的完整指南

什么是 Apache POI?

Apache POI 是一个开源的 Java API,用于读写 Microsoft Office 文档(如 Word、Excel、PowerPoint)。其中,XWPF 组件专门用于处理 .docx 格式的 Word 文档。

为什么使用 Word 模板?

在实际开发中,常常需要根据业务数据动态填充 Word 文档。通过预先设计好格式的 Word 模板,再用 Java 程序替换占位符(如 ${name}${date}),可以高效生成标准化文档,适用于合同、报告、证书等场景。

基础代码示例

以下是一个使用 POI 替换 Word 模板中占位符的简单示例:

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> replacements) 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, replacements);
            }

            // 替换表格中的文本
            for (XWPFTable table : doc.getTables()) {
                for (XWPFTableRow row : table.getRows()) {
                    for (XWPFTableCell cell : row.getTableCells()) {
                        for (XWPFParagraph paragraph : cell.getParagraphs()) {
                            replaceInParagraph(paragraph, replacements);
                        }
                    }
                }
            }

            doc.write(fos);
        }
    }

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

依赖配置(Maven)

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

注意事项

维普毕业论文自动选题失败问题解决方案 论文查重算附录的调查问卷吗?附录查重问题解析 如何快速对比Word和PDF内容 - 实用办公技巧指南 Word转PDF的多种实用方案 | 免费在线转换指南 留学生论文降低查重率实用方法指南 用AI写论文会不会查重率高?探讨AI写作与查重系统的关系 免费改写论文软件手机版 - 高效降AIGC工具推荐 论文查重指南:如何有效降低论文重复率 | 学术写作技巧 论文查重修改大全 - 高效通过查重的技巧与方法 学校论文AI检测:原理与应对 论文格式修改教程 - 专业指南与实用技巧 sci润色能否降低查重率?深入解析润色对查重的影响 无问AI怎么写论文 - AI辅助学术写作指南 AI如何把文章改写不雷同 - 智能降重技巧与工具推荐 如何在Word中打开邮件 - 完整操作指南 AI软件如何修改原有数字 | 数字编辑与降AIGC工具使用指南 AIGC检测标准介绍 Pages文件转换成Word文档 - 免费在线转换工具指南 免费改论文的网站推荐 | 高质量论文修改工具 怎么能把PDF文件变小 - 实用技巧与工具推荐 AI降重的论文能查重到吗? - 探讨AI降重与查重技术 Word查找替换功能使用指南 - 快速掌握高效编辑技巧 AI内容检测指南:如何识别AI生成的文章 | 原创性检测工具 如何使用AI进行论文降重 - 实用指南 论文中定义部分如何降重 - 学术写作技巧 Markdown 教程 - 从入门到精通的完整指南 论文查重软件推荐 | 专业查重工具使用指南 广州万方查重怎么算重复?原理与方法详解 英文论文语法修改AI工具 - 智能润色与降AIGC解决方案 | 学术写作助手 Word小写数字转大写金额 - 在线免费转换工具 毕业论文查AI率怎么查 - 方法与工具指南 怎么用AI免费写论文 | AI论文写作指南与降AIGC工具 怎么查自己论文的查重 - 方法与工具指南 哪些论文需要查AIGC?了解学术规范与检测要求 如何使用AI撰写综述论文:实用指南 24届毕业生论文查AIGC吗?了解AI生成内容检测现状 sci查重不过可以请人润色吗?原因与解决方案 论文降重原理课件 - 学术写作指导 论文参考文献查找指南 - 学术资源与工具推荐 Word加盖公章不遮挡字 - 实用办公技巧指南 论文修改在线版 - 专业论文润色与AI降重工具 论文查重怎么查手机 - 手机端论文查重方法指南 Word回车符号怎么显示?详细教程与解决方法 Word快速生成文字 - 在线高效办公技巧指南 Word文档怎么插视频?详细图文教程 - Word办公技巧指南 AI降重方法全解析 - 如何有效降低AI内容检测率 理科毕业论文如何降重效果好 - 实用降重技巧指南 PPT转Word文档的免费方法 - 在线高效转换指南 论文查重率和降重有什么关系? - 学术写作指南 本科论文知网查重费用说明 - 毕业生查重指南 免费Word办公软件有哪些 - 高效办公必备推荐 论文重复率有点高怎么降重?实用降重方法指南 论文全文英文字体修改指南 | 学术排版技巧与工具推荐 毕业论文口语化严重?专业解决方案与降AIGC工具推荐 专科论文查AIGC吗?了解专科毕业论文的AI内容检测现状 网页文档怎么导出为Word?完整教程与工具推荐 中文论文翻译成英文的方法与技巧 | 专业学术翻译指南 Word比较两个文件的差别 - 在线文档对比工具指南 PDF文件如何压缩 - 免费高效压缩PDF大小方法大全 怎样把电子印章嵌入Word里 - 详细图文教程 论文讨论部分AI - 如何优化AI生成的学术讨论内容 AI高风险说明:理解AI应用中的潜在风险与应对策略 论文空格插入可以降重吗?效果与风险分析 化工毕业设计论文降重指南 工科设计论文降重技巧 - 实用指南 Word显示比例怎么调整?详细图文教程指南 大雅论文查重28%怎么修改?高效降重方法与小发猫降AIGC工具详解 论文查重率在多少算合格?各类学术要求详解 Word文档大小怎么压缩?实用方法与工具推荐 格子达查AI率多少钱 - 价格与服务说明 毕业论文AIGC降重实用指南 论文降重会改变论文的内容吗? - 学术写作指南 Markdown流程图教程与工具 - 轻松绘制专业流程图 paperyy查重与知网查重对比分析 - 论文查重系统比较 论文AI免费模板 - 高效写作工具与降AIGC解决方案 学术论文写作指南 | 高效写作技巧与降AIGC工具推荐 Word横页设置页码在左侧 - 完整图文教程 本科论文会查AIGC值吗?了解AI生成内容检测现状 Word如何快速定位页码 - 实用技巧指南 降重和降AIGC有什么区别? - 详解学术写作中的两个重要概念 论文翻译注意事项 - 学术翻译实用指南 论文中公式降重的方法与技巧 | 学术写作指南 Word公式显示乱码怎么修复?完整解决方法指南 论文降重数据怎么改:实用技巧与方法 论文写作技巧:如何避免口语化表达 | 学术写作指南 低重复率论文写作指南 - 小发猫降AIGC工具使用详解 论文AIGC改几个字可以降重嘛?探讨有效降重方法 Word文档怎么添加目录 - 详细图文教程指南 Word模板网 - 免费下载各类Word文档模板 Word文件比较工具 - 在线免费对比两个Word文档差异 怎样AI写论文 | AI论文写作指南与降AIGC工具使用 Word文档中“全部替换”功能使用指南 - 快速高效批量修改文本 Word一键删除空格 - 快速清除文档中多余空格的在线工具 毕业论文降重到多少才能提交?查重率标准与降重方法指南 论文改写AI助手 - 高效降低AI率,提升论文原创性 如何用AI写作文 - 智能写作技巧与降AIGC方法全攻略 双Word文档对比编辑器 - 在线左右分屏查看与编辑Word内容 维普论文和哪个查重软件相近 - 查重系统对比解析 研究生论文怎么降重复率 - 实用方法与技巧指南 Markdown下载 - 免费获取Markdown编辑器与模板资源