使用Apache POI库操作Word文档

在Java开发中,有时候我们需要操作Word文档来生成报表、导出数据等。Apache POI是一个开源的Java库,可以帮助我们读取、创建和修改Microsoft Office文档,包括Word文档。在本文中,我们将介绍如何使用Apache POI库来操作Word文档。

准备工作

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

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.4</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.4</version>
</dependency>
<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>5.1.1</version>
</dependency>

创建Word文档

首先,我们来看一个简单的例子,创建一个Word文档并写入一些文本:

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

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

public class CreateWordDocument {
    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);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们首先创建了一个XWPFDocument对象,表示一个Word文档。然后创建了一个段落和一个运行对象,将文本"Hello, World!"写入到文档中。最后,将文档写入到文件中。

读取Word文档

除了创建Word文档,我们也可以使用Apache POI库来读取Word文档。下面是一个简单的例子,读取Word文档中的文本内容:

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

import java.io.FileInputStream;
import java.io.IOException;

public class ReadWordDocument {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("input.docx");
             XWPFDocument document = new XWPFDocument(fis)) {

            for (XWPFParagraph paragraph : document.getParagraphs()) {
                System.out.println(paragraph.getText());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用XWPFDocument类读取Word文档,然后遍历文档中的所有段落,输出每个段落的文本内容。

序列图

下面是一个简单的序列图,展示了创建Word文档的过程:

sequenceDiagram
    participant Client
    participant XWPFDocument
    participant XWPFParagraph
    participant XWPFRun
    participant FileOutputStream

    Client->>XWPFDocument: 创建文档
    XWPFDocument->>XWPFParagraph: 创建段落
    XWPFParagraph->>XWPFRun: 创建运行对象
    XWPFRun->>XWPFRun: 写入文本
    XWPFDocument->>FileOutputStream: 写入到文件

类图

下面是一个简单的类图,展示了Apache POI库中与Word文档操作相关的类:

classDiagram
    class XWPFDocument
    class XWPFParagraph
    class XWPFRun
    class XWPFTable
    XWPFDocument <|-- XWPFParagraph
    XWPFParagraph <|-- XWPFRun
    XWPFDocument <|-- XWPFTable

结语

通过本文的介绍,我们学习了如何使用Apache POI库来操作Word文档,包括创建和读取文档。Apache POI库提供了丰富的API,可以满足我们在Java开发中对Word文档的操作需求。希望本文对你有所帮助,谢谢阅读!