使用Java创建Word模板并填充数据
在日常工作中,我们经常需要生成和编辑Word文档。而有时候,我们需要将一些固定格式的文档作为模板,然后填充一些动态数据到模板中。本文将介绍如何使用Java创建Word模板并填充数据。
1. 创建Word模板
首先,我们需要创建一个Word模板文件,该文件包含了需要填充的固定内容,以及一些占位符来标识需要填充的动态数据。可以使用Microsoft Word或其他文档编辑软件创建模板文件。在模板中使用一些特定的标记来表示需要填充数据的位置,比如${name}
表示姓名,${age}
表示年龄等。
2. 使用Apache POI库操作Word文档
Apache POI是一个用于操作Microsoft Office格式文档的Java库。我们可以使用Apache POI来读取并填充Word文档。
首先,我们需要在项目中引入Apache POI库的依赖:
<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模板文件,并填充数据:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTemplate;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
public class WordTemplateFiller {
public static void fillTemplate(String templatePath, String outputPath, Map<String, String> data) {
try (FileInputStream fis = new FileInputStream(templatePath);
XWPFTemplate template = XWPFTemplate.compile(fis)) {
XWPFDocument document = template.getXWPFDocument();
for (XWPFParagraph paragraph : document.getParagraphs()) {
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);
}
}
}
try (FileOutputStream fos = new FileOutputStream(outputPath)) {
document.write(fos);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Map<String, String> data = new HashMap<>();
data.put("${name}", "Alice");
data.put("${age}", "30");
fillTemplate("template.docx", "output.docx", data);
}
}
3. 示例
假设我们有一个模板文件template.docx
,内容如下:
Hello, ${name}!
You are ${age} years old.
我们可以使用上面的代码将模板中的${name}
和${age}
替换为具体的值,并生成新的文档output.docx
。
4. 结语
通过本文的介绍,我们了解了如何使用Java创建Word模板并填充数据。这在实际工作中非常有用,可以帮助我们快速生成符合需求的文档。希望本文对您有所帮助!