Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

JAVA word模板填充数据


在 Java 中,填充 Word 模板数据有多种实现方式。以下是一些常见的方法,以及它们的步骤流程、依赖坐标和示例代码:

Apache POI

Apache POI 是一个流行的 Java 库,用于操作 Microsoft Office 文件格式(包括 Word 文档)。它可以用于填充 Word 模板数据。

步骤流程:

  1. 添加 Apache POI 依赖到项目中(Maven 或 Gradle)。
  2. 打开现有的 Word 模板文档。
  3. 定位并修改模板中的占位符,用实际数据替换。
  4. 保存生成的文档。

Maven 依赖:

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

Gradle 依赖:

implementation 'org.apache.poi:poi:5.0.0'

示例代码:

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

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordTemplateFiller {
    public static void main(String[] args) throws IOException {
        // Load the Word template
        XWPFDocument document = new XWPFDocument(Thread.currentThread().getContextClassLoader().getResourceAsStream("template.docx"));

        // Find the placeholder and replace with actual data
        for (XWPFParagraph paragraph : document.getParagraphs()) {
            for (XWPFRun run : paragraph.getRuns()) {
                String text = run.getText(0);
                if (text != null && text.contains("{{name}}")) {
                    text = text.replace("{{name}}", "John Doe");
                    run.setText(text, 0);
                }
            }
        }

        // Save the modified document
        FileOutputStream out = new FileOutputStream(new File("filled_template.docx"));
        document.write(out);
        out.close();
        document.close();
    }
}

在上面的示例中,"template.docx"是你的 Word 模板文件,里面包含了"{{name}}"占位符,代码会将其替换为"John Doe"。

Apache FreeMarker

Apache FreeMarker 是一个模板引擎,可以用于填充 Word 模板数据。

步骤流程:

  1. 添加 Apache FreeMarker 依赖到项目中(Maven 或 Gradle)。
  2. 创建 FreeMarker 模板,定义占位符。
  3. 使用 FreeMarker 将模板与数据合并,生成填充好数据的文本。
  4. 使用 Apache POI 将填充好数据的文本写入 Word 文档。

Maven 依赖:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

Gradle 依赖:

implementation 'org.freemarker:freemarker:2.3.31'

示例代码:

import freemarker.template.Configuration;
import freemarker.template.Template;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class FreeMarkerWordTemplateFiller {
    public static void main(String[] args) throws Exception {
        // Load FreeMarker template configuration
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
        cfg.setClassForTemplateLoading(FreeMarkerWordTemplateFiller.class, "/templates");

        // Load FreeMarker template
        Template template = cfg.getTemplate("template.ftl");

        // Prepare data model
        Map<String, String> dataModel = new HashMap<>();
        dataModel.put("name", "Jane Doe");

        // Merge template with data model
        StringWriter writer = new StringWriter();
        template.process(dataModel, writer);

        // Write merged content to Word document using Apache POI
        XWPFDocument document = new XWPFDocument();
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText(writer.toString());

        FileOutputStream out = new FileOutputStream(new File("filled_template.docx"));
        document.write(out);

        // Clean up resources
        out.close();
        document.close();
    }
}

在上面的示例中,"template.ftl"是 FreeMarker 模板文件,代码将模板与数据合并后,使用 Apache POI 将生成的文本写入 Word 文档。

这些是两种常见的方法,用于在 Java 中填充 Word 模板数据。选择适合你项目需求的方法,并根据示例代码进行定制。

在Java中填充数据有多种实现方式,包括使用基本的Java标准库、第三方库以及一些开源框架。Maven依赖:Gradle依赖:示例代码:以上 ...
在Java中导出Word文档有多种方式,以下将介绍两种常见的方式:使用ApachePOI和使用Docx4j。以下是使用Docx4j导出Wor ...
###使用Java的标准库这种方法使用Java的标准库来创建图像,然后将文字绘制到图像上。示例代码:###使用第三方库:ApacheBati ...
##使用ApachePOIApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式的文件。###步骤流程添加依赖 ...
在Java中将HTML转换为Word通常需要使用一些第三方库,因为直接在Java标准库中没有内置的功能来实现这个转换。虽然它没有直接的HTM ...