使用Java POI 复制 Word 模板

在日常工作中,我们经常需要处理Word文档,其中一项常见的需求是复制一个Word模板并填入不同的内容。在Java开发中,可以使用Apache POI库来实现这一功能。本文将介绍如何使用Java POI库来复制一个Word模板,并填入不同的内容。

准备工作

首先,我们需要引入POI库的依赖。在pom.xml文件中添加以下依赖:

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

接下来,我们需要准备一个Word模板文件,例如名为template.docx的文件。这个模板文件中可以包含一些占位符,我们将在代码中替换这些占位符为真实内容。

复制Word模板

首先,我们需要加载模板文件并创建一个新的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.openxml4j.exceptions.InvalidFormatException;

// 加载模板文件
FileInputStream fis = new FileInputStream("template.docx");
XWPFDocument templateDoc = new XWPFDocument(fis);

// 创建新的Word文档对象
XWPFDocument newDoc = new XWPFDocument();

// 复制模板文件的内容到新文档
for (XWPFParagraph para : templateDoc.getParagraphs()) {
    XWPFParagraph newPara = newDoc.createParagraph();
    for (XWPFRun run : para.getRuns()) {
        XWPFRun newRun = newPara.createRun();
        newRun.setText(run.getText(0));
    }
}

填入内容

现在,我们已经成功复制了模板文件的内容到新文档中。接下来,我们可以在新文档中查找并替换占位符为真实内容。

// 在新文档中查找并替换占位符为真实内容
for (XWPFParagraph para : newDoc.getParagraphs()) {
    for (XWPFRun run : para.getRuns()) {
        String text = run.getText(0);
        if (text != null && text.contains("{{placeholder}}")) {
            run.setText(text.replace("{{placeholder}}", "Real Content"), 0);
        }
    }
}

保存文档

最后,我们可以保存新文档到指定的位置。

// 保存文档
FileOutputStream fos = new FileOutputStream("new_document.docx");
newDoc.write(fos);
fos.close();

通过以上代码示例,我们成功使用Java POI库复制了一个Word模板,并填入不同的内容。这在处理大量相似文档并进行批量替换时非常实用。希望本文对你有所帮助!