使用Java填充Word模板

在实际开发中,我们经常需要将数据填充到Word文档中,以便生成报告、合同或其他类型的文档。本文将介绍如何使用Java填充Word模板,以及一些常用的Java库和工具。我们将通过一个简单的示例来演示这个过程。

1. 准备Word模板

首先,我们需要准备一个Word模板文件,其中包含需要填充的文本内容以及占位符。可以使用Microsoft Word或其他文档编辑软件创建一个模板文件,并在需要填充的位置插入占位符,例如 ${name}${age}等。

2. 使用Apache POI库填充Word模板

Apache POI是一个用于操作Microsoft Office格式文件的Java库,包括Word文档。我们可以使用Apache POI来读取Word模板文件,并替换其中的占位符。

首先,我们需要添加Apache POI的依赖:

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

接下来,我们可以编写代码来读取Word模板文件并替换占位符:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;

public class WordFiller {
    public static void fillWordTemplate(String templatePath, String outputPath, Map<String, String> replacements) {
        try (FileInputStream fis = new FileInputStream(templatePath);
             XWPFDocument document = new XWPFDocument(fis)) {
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                String text = paragraph.getText();
                for (Map.Entry<String, String> entry : replacements.entrySet()) {
                    text = text.replace(entry.getKey(), entry.getValue());
                }
                paragraph.getCTP().setDomNode(paragraph.getCTP().newCursor());
                paragraph.getCTP().addNewR().addNewT().setStringValue(text);
            }
            document.write(new FileOutputStream(outputPath));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Map<String, String> replacements = new HashMap<>();
        replacements.put("${name}", "John Doe");
        replacements.put("${age}", "30");
        fillWordTemplate("template.docx", "output.docx", replacements);
    }
}

在上面的代码中,我们首先读取Word模板文件(template.docx),然后将占位符替换为指定的值,并保存到输出文件(output.docx)中。

3. 运行示例

在运行上面的示例代码之前,确保已经准备好一个Word模板文件(template.docx),并且已经添加了Apache POI的依赖。

运行示例代码后,可以在输出文件(output.docx)中看到占位符被替换为指定的值,生成的Word文档已经填充完成。

通过以上示例,我们已经学会了如何使用Java填充Word模板,希望对你有所帮助。如果有任何疑问或需要进一步的帮助,请查阅相关文档或留言反馈。

参考链接

  • [Apache POI官方网站](
  • [Apache POI GitHub仓库](