Word文档模板操作:POI实现数据填充与导出

星空下的诗人 2019-05-12 ⋅ 36 阅读

前言

在许多业务场景中,我们经常需要根据一份模板生成各种复杂的 Word 文档,然后填入对应的数据并导出。本文将介绍如何使用 POI(Apache提供的开源 Java API)来实现 Word 文档的模板操作、数据填充和导出。

准备工作

首先,我们需要引入 POI 相关依赖包。可以到 Apache 官网下载最新的 POI 包,也可以通过 Maven 添加以下依赖:

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

创建模板

首先,我们创建一个 Word 文档作为模板文件(template.docx)。在模板中,可以事先定义好需要填入的数据的位置,可以使用特定的占位符标记。

加载模板

在 Java 代码中,使用 POI 的 XWPFDocument 类加载模板文件并创建一个文档对象。

FileInputStream inputStream = new FileInputStream("template.docx");
XWPFDocument document = new XWPFDocument(inputStream);

填充数据

接下来,我们需要找到模板中需要填入数据的位置,然后使用 POI API 进行数据填充。

for (XWPFParagraph paragraph : document.getParagraphs()) {
    List<XWPFRun> runs = paragraph.getRuns();
    for (int i = 0; i < runs.size(); i++) {
        XWPFRun run = runs.get(i);
        String text = run.getText(0);
        if (text != null && text.contains("{{name}}")) {
            text = text.replace("{{name}}", "John Doe");
            run.setText(text, 0);
        }
    }
}

上述代码中,我们遍历每个段落和每个运行(文字块),查找包含占位符 "{{name}}" 的文本,并进行替换。

导出文档

最后,我们将填充完数据的文档导出为一个新的 Word 文件。

FileOutputStream outputStream = new FileOutputStream("output.docx");
document.write(outputStream);
outputStream.close();
document.close();

总结

使用 POI 实现 Word 文档的模板操作、数据填充和导出非常简单。通过使用 POI 提供的 API,可以轻松地定位模板中的数据位置,并进行替换,最后导出为一个新的文件。这个方法可以应用于各种场景,包括生成报告、合同、简历等等。希望本文能帮助到你,祝你在实际项目中顺利应用!


全部评论: 0

    我有话说: