前言
在许多业务场景中,我们经常需要根据一份模板生成各种复杂的 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,可以轻松地定位模板中的数据位置,并进行替换,最后导出为一个新的文件。这个方法可以应用于各种场景,包括生成报告、合同、简历等等。希望本文能帮助到你,祝你在实际项目中顺利应用!
本文来自极简博客,作者:星空下的诗人,转载请注明原文链接:Word文档模板操作:POI实现数据填充与导出