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>

注意事项

Word添加项目符号教程 - 自定义列表样式完全指南 SRT文件转换成Word文档 - 免费在线转换工具指南 Word怎么删除有特定字的某行?实用技巧与操作指南 解决Word公式显示乱码的方法 - Word文档常见问题指南 Word自动换行符在哪里设置?详细图文教程指南 怎么在Word里把字体无限放大 - Word字体大小设置技巧 Word文档如何设置图片背景 - 完整图文教程 Word页面整体旋转180度效果 - 实用办公技巧指南 Word如何只旋转一页?详细图文教程指南 Excel转为Word在线工具 - 免费一键转换 | 千出赛办公助手 Word如何不显示修订?隐藏修订痕迹的详细方法 Word统一修改数字字体 - 快速设置文档中所有数字的字体格式 Word打字后面文字丢失?原因与解决方法全解析 Word怎么找回之前编辑过的内容 - 完整恢复指南 Word文档拒绝修订后还能找回吗?完整恢复指南 Word不能输入文字?原因分析与解决方法大全 Word文档变成WPS怎么办?原因分析与解决方法 Word纸张靠左如何设置在中间?详细图文教程 Word怎么一次添加多行?高效插入多行表格技巧 Word表格内如何换行 - 实用办公技巧指南 如何将网页内容转换为Word文档 - 实用教程与工具推荐 Word怎么把一行变长?详细解决方法与技巧 怎样对比两个Word文档中的内容 - 实用办公技巧指南 Word对比工具快捷键:Ctrl加什么?快速掌握文档比对技巧 Word怎么统一删除个别文字 - 高效批量删除技巧指南 Java实现Word转PDF文件(高效不失真) - 免费教程与工具推荐 Word用哪个版本好用?2025最新推荐与对比指南 Word文档如何添加拐弯箭头?详细图文教程 Word打字看不到字?原因分析与解决方法大全 Word打不上去字怎么办?常见原因与解决方法大全 Word底色怎么变成白色?详细设置方法与技巧 Word修订模式怎么关闭?详细步骤教程指南 Word表格字装不下遮住了?原因与解决方法全解析 Word文档全灰处理方法 - 禁止编辑与修改的解决方案 Word怎么把批注全部删除 - 完整操作指南 Word怎么取消自动替换?详细关闭方法教程 Word文档被锁定原因及解决方法 - 全面解析 HTML如何转换成Word文档 - 免费在线转换方法与工具指南 手机打开MD文件的软件推荐 - 轻松查看Markdown文档 Word批量修改图片大小 - 高效办公技巧指南 Word主题背景颜色怎么设置 - 完整图文教程 Word删除技巧大全 - 快速掌握文档内容删除方法 Word文档怎么把公章?插入与调整方法详解 Word文档历史版本在哪里?完整查找与恢复指南 Word点错了没保存怎么恢复?未保存文档找回方法大全 Word怎么添加视频并播放 - 实用教程指南 Word打不出汉字只能打英文?原因与解决方法全解析 Word怎么把一整行加上底色?详细操作教程 怎么把Word导入PPT?详细教程与实用方法 Word波浪线怎么打在中间?详细操作方法与技巧 Word修订功能怎么用?详细图文教程指南 Word表格如何设置换行 - 实用办公技巧指南 PDF文件拆分成多个文件 - 免费在线工具与教程 Word修改前面字后面的字没了?原因与解决方法全解析 Word下划线删除不掉怎么办?原因与解决方法全解析 Python Markdown 使用指南 - 轻松将 Markdown 转换为 HTML Word怎么设置修订模式?详细图文教程指南 Word嵌套表格边框重合问题详解与解决方法 Markdown阅读器下载 - 免费好用的本地与在线工具推荐 Word打不上数字怎么回事?原因分析与解决方法 Word按空格键后面的字就没了?原因与解决方法 Word怎么从改写切换到正常 - 完整解决方法指南 Word表格照片怎么放上去?详细图文教程指南 Word最后一行与底部间距大?原因分析与解决方法 Word表格插入一寸照教程 - 轻松排版证件照 Word怎么自动生成页码?详细图文教程指南 Markdown流程图语法与使用指南 - 快速上手绘制流程图 Word取消文字覆盖 - 解决Word文档输入时覆盖文字的问题 Word怎么自动生成PPT?完整教程与工具推荐 Word文档被修改提示怎么设置 - 详细教程指南 Word修订模式是什么?详解与使用指南 - Word办公技巧专题 Word背景图片设置方法大全 - 轻松美化你的文档 Word删除蓝色双横线方法大全 - 快速解决文档格式问题 Word图片怎么放大?详细操作方法与技巧指南 Word黑色背景怎么改?详细解决方法与教程 Word怎么设置行高和列宽 - Word排版技巧指南 Word标准字间距是多少?详细解析与设置方法 Word删除文字出现红色横线?原因与解决方法全解析 Word如何设置项目符号 - 详细图文教程指南 Word黑白模式怎么设置?详细教程与技巧 Word小写转大写工具 - 免费在线一键转换 怎么取消Word蓝色双下划线 - 完整解决方法指南 Word怎么取消改写?详细操作步骤与解决方法 表格Word转换工具与使用指南 - 高效办公必备 Word统一行高怎么设置 - 详细图文教程指南 PDF转Word后不能编辑怎么办?原因与解决方法全解析 Word打字下划线不后移原因与解决方法 - 全面指南 Word删除重复字的最简单方法 - 高效办公技巧指南 Word页码突然没了?原因分析与解决方法大全 Word突然无法输入中文?原因分析与解决方法大全 两个Word文档在一个窗口对比查看与编辑 - 在线办公工具 Word文档怎么退出修订模式?详细图文教程指南 Word怎么变成黑色背景?详细设置方法与技巧指南 Word怎么关掉修订模式?详细步骤教程 - 办公技巧指南 Word显示正常但打印乱码?原因与解决方法全解析 Word编辑模式怎么打开 - 完整操作指南 Word一键调整图片大小 - 快速高效调整文档中图片尺寸 Word表格字间距调整方法 - 完整图文教程 Word取消错误提示 - 解决拼写与语法检查红波浪线问题 Word表格怎么自动换行 - 完整设置教程