填充word模板
时间: 2023-07-31 11:12:43 浏览: 159
填充 Word 模板通常有两种方法:
1. 利用 Apache POI 库进行填充
Apache POI 是一个用于操作 Microsoft Office 文档的 Java 库,可以通过它来填充 Word 模板。具体步骤如下:
- 打开 Word 模板,读取模板内容。
```
InputStream inputStream = new FileInputStream(new File("template.docx"));
XWPFDocument document = new XWPFDocument(inputStream);
```
- 替换模板中的占位符。
```
Map<String, Object> data = new HashMap<>();
data.put("name", "张三");
data.put("age", "26");
for (XWPFParagraph paragraph : document.getParagraphs()) {
List<XWPFRun> runs = paragraph.getRuns();
for (XWPFRun run : runs) {
String text = run.getText(0);
if (text != null) {
for (Entry<String, Object> entry : data.entrySet()) {
if (text.contains(entry.getKey())) {
text = text.replace(entry.getKey(), String.valueOf(entry.getValue()));
run.setText(text, 0);
}
}
}
}
}
```
- 输出填充好的文档。
```
OutputStream outputStream = new FileOutputStream(new File("output.docx"));
document.write(outputStream);
outputStream.close();
document.close();
```
2. 利用模板引擎进行填充
模板引擎可以将数据和模板进行组合,生成最终的文档。常用的模板引擎有 FreeMarker、Thymeleaf 等。以 FreeMarker 为例,具体步骤如下:
- 定义数据模型。
```
Map<String, Object> data = new HashMap<>();
data.put("name", "张三");
data.put("age", "26");
```
- 加载模板。
```
Configuration configuration = new Configuration(Configuration.VERSION_2_3_30);
configuration.setDefaultEncoding("UTF-8");
configuration.setClassForTemplateLoading(getClass(), "/templates");
Template template = configuration.getTemplate("template.ftl");
```
- 填充数据。
```
Writer out = new OutputStreamWriter(new FileOutputStream(new File("output.docx")), "UTF-8");
template.process(data, out);
out.flush();
out.close();
```
其中,`/templates` 表示模板文件所在的目录,`template.ftl` 表示模板文件名。
阅读全文