Java生成Word

在日常工作和学习中,我们经常会遇到需要生成Word文档的需求。而Java作为一种强大的编程语言,也提供了多种方法来生成Word文档。本文将介绍几种常用的Java生成Word文档的方法,并附上相应的代码示例。

1. Apache POI

Apache POI是一个流行的Java库,它可用于创建和处理Microsoft Office格式的文件,包括Word文档。通过Apache POI,我们可以在Java中生成和编辑Word文档。

首先,我们需要在项目的pom.xml中添加Apache POI的依赖:

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

下面是一个使用Apache POI生成Word文档的示例代码:

import org.apache.poi.xwpf.usermodel.*;

import java.io.*;

public class WordGenerator {

    public static void main(String[] args) {
        // 创建文档对象
        XWPFDocument document = new XWPFDocument();

        // 创建段落对象
        XWPFParagraph paragraph = document.createParagraph();

        // 创建运行对象
        XWPFRun run = paragraph.createRun();
        run.setText("Hello, World!");

        // 保存文档
        try (FileOutputStream out = new FileOutputStream("output.docx")) {
            document.write(out);
            System.out.println("生成Word文档成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码使用XWPFDocumentXWPFParagraphXWPFRun等类来创建Word文档,并将文档保存为output.docx文件。

2. Docx4j

Docx4j是另一个流行的Java库,它提供了一种简单的方式来生成和处理Word文档。相比于Apache POI,Docx4j的API更加易于使用和理解。

同样地,在项目的pom.xml中添加Docx4j的依赖:

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>11.1.3</version>
</dependency>

下面是一个使用Docx4j生成Word文档的示例代码:

import org.docx4j.Docx4J;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.wml.*;

import javax.xml.bind.JAXBException;
import java.io.*;

public class WordGenerator {

    public static void main(String[] args) {
        WordprocessingMLPackage wordMLPackage;
        try {
            // 创建文档对象
            wordMLPackage = WordprocessingMLPackage.createPackage();

            // 创建段落对象
            P paragraph = factory.createP();

            // 创建运行对象
            Text text = factory.createText();
            text.setValue("Hello, World!");

            R run = factory.createR();
            run.getContent().add(text);
            paragraph.getContent().add(run);

            // 将段落添加到文档
            wordMLPackage.getMainDocumentPart().getContent().add(paragraph);

            // 保存文档
            wordMLPackage.save(new File("output.docx"));
            System.out.println("生成Word文档成功!");
        } catch (JAXBException | FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

上述代码使用WordprocessingMLPackagePRText等类来创建Word文档,并将文档保存为output.docx文件。

3. Freemarker

Freemarker是一个模板引擎,它可以与Apache POI或Docx4j等库结合使用,根据模板生成Word文档。使用Freemarker可以更灵活地控制文档的格式和内容。

首先,我们需要在项目的pom.xml中添加Freemarker的依赖:

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

下面是一个使用Freemarker生成Word文档的示例代码:

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.poi.xwpf.usermodel.*;

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

public class WordGenerator {

    public static void main(String[] args) {