使用 Java XWPFDocument 添加 Word 文档正文

在许多业务需求中,动态生成 Word 文档是一个常见的功能。Java 提供了 Apache POI 库,使得处理 Microsoft Office 格式的文档变得简单而高效。在这篇文章中,我们将探讨如何使用 Java 的 XWPFDocument 类来添加正文到 Word 文档中,并提供代码示例以帮助更好地理解。

Apache POI 简述

Apache POI 是一个强大的 Java 函数库,用于读取和写入 Microsoft Office 文档。它支持多种文件格式,包括 .xls.xlsx.doc.docx.ppt 等。对于 Word 文档,我们通常使用 XWPF 包,这里所提到的 XWPFDocument 类正是其核心部分之一。

环境准备

首先,确保你的项目中引入了 Apache POI 相关的依赖。如果你使用 Maven,可以在 pom.xml 中添加以下内容:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.1</version>
</dependency>

创建 XWPFDocument 对象并添加正文

接下来,我们将编写代码来创建 XWPFDocument 对象,并在其中添加正文。在这个示例中,我们将创建一个新的 Word 文档,并向其中添加一些文本。

代码示例

以下是一个简单的代码示例,展示了如何使用 XWPFDocument 类创建一个 Word 文档并添加正文。

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

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

public class WordExample {

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

        // 创建段落
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun(); // 创建运行

        // 添加文本
        run.setText("Hello, this is the first paragraph of my Word document!"); 

        // 设置样式
        run.setBold(true); // 设置为粗体
        run.setFontSize(14); // 设置字体大小

        // 创建第二个段落
        XWPFParagraph secondParagraph = document.createParagraph();
        XWPFRun secondRun = secondParagraph.createRun();
        secondRun.setText("This is the second paragraph with normal text.");
        
        // 写入文档
        try (FileOutputStream out = new FileOutputStream("example.docx")) {
            document.write(out);
            System.out.println("Document written successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

代码解析

  1. 引入必要的包:我们引入了 org.apache.poi.xwpf.usermodel 包中的类,来处理 Word 文档。
  2. 创建文档对象:通过 new XWPFDocument() 创建一个新的 Word 文档。
  3. 添加段落和文本:通过 createParagraph() 创建段落,然后使用 createRun() 来添加文本。
  4. 设置样式:我们可以使用 setBold()setFontSize() 方法来设置文本的样式。
  5. 写入文件:最后,我们使用 FileOutputStream 将文档写入磁盘。

关系图

为了更好地理解 XWPFDocument 类与其他类之间的关系,我们可以使用 ER 图来展示它们之间的关系。以下是用 Mermaid 语法描述的关系图:

erDiagram
    XWPFDocument {
        +List<XWPFParagraph> paragraphs
    }
    XWPFParagraph {
        +List<XWPFRun> runs
    }
    XWPFRun {
        +String text
        +boolean isBold
        +int fontSize
    }

    XWPFDocument ||--o{ XWPFParagraph : contains
    XWPFParagraph ||--o{ XWPFRun : contains

从上面的图中,我们可以看出 XWPFDocument 包含多个 XWPFParagraph,而每个 XWPFParagraph 又包含多个 XWPFRun。这种层级结构使得我们能够灵活地构建 Word 文档的内容。

小结

在本文中,我们学习了如何使用 Java 的 XWPFDocument 类来创建 Word 文档及其正文内容。通过简洁的 API,我们能够方便地添加段落和文本,并设置相应的样式。Apache POI 是一个功能强大且灵活的工具,可以方便地处理各种 Microsoft Office 文档格式,极大地满足了企业在文档自动化方面的需求。

未来,你可以进一步探索如何添加图片、表格、样式等功能,来更加丰富你的 Word 文档生成逻辑。希望这篇文章能够为你使用 Apache POI 开启新的探索之旅!