Java操作Word文档表格

在Java开发中,我们经常需要处理各种类型的文档,包括Word文档。Word文档中的表格是一种常见的数据展示方式,因此在Java中操作Word文档表格是一个非常有用的技巧。本文将介绍如何使用Java代码操作Word文档中的表格,并提供一些示例代码。

Apache POI库

Apache POI是一个非常流行的Java库,用于操作Microsoft Office格式的文档,包括Word文档。我们可以使用Apache POI库来读取、修改和创建Word文档中的表格。

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

<dependencies>
    <!-- Apache POI -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.0.0</version>
    </dependency>
</dependencies>

操作Word表格

读取表格内容

要读取Word文档中的表格内容,我们首先需要加载文档并找到目标表格。以下是一个示例代码:

import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;

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

            // 获取第一个表格
            XWPFTable table = document.getTables().get(0);

            // 遍历表格行
            for (XWPFTableRow row : table.getRows()) {
                // 遍历行中的单元格
                for (XWPFTableCell cell : row.getTableCells()) {
                    // 输出单元格内容
                    System.out.println(cell.getText());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们使用XWPFDocument类加载Word文档,并通过getTables()方法获取文档中的所有表格。然后,我们选择第一个表格进行处理。通过遍历行和单元格,我们可以获取并输出表格中的内容。

修改表格内容

要修改Word文档中的表格内容,我们需要先读取表格,然后对表格进行修改。以下是一个示例代码:

import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

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

            // 获取第一个表格
            XWPFTable table = document.getTables().get(0);

            // 修改表格内容
            table.getRow(0).getCell(0).setText("New Value");

            // 保存修改后的文档
            FileOutputStream fos = new FileOutputStream("updated_example.docx");
            document.write(fos);
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们加载了Word文档并获取了第一个表格。然后,我们使用setText()方法修改表格中指定单元格的内容。最后,我们将修改后的文档保存到新文件中。

创建新表格

如果我们需要创建一个新的Word文档表格,可以使用以下示例代码:

import org.apache.poi.xwpf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordTableCreator {
    public static void main(String[] args) {
        try {
            XWPFDocument document = new XWPFDocument();

            // 创建一个带有3行4列的新表格
            XWPFTable table = document.createTable(3, 4);

            // 修改表格内容
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 4; j++) {
                    table.getRow(i).getCell(j).setText("Cell " + (i+1) + "-" + (j+1));
                }
            }

            // 保存文档
            FileOutputStream fos = new FileOutputStream("new_example.docx");
            document.write(fos);
            fos.close();
        } catch (