半岛权威十大直营(官方)网站

文档处理控件Spire.Doc系列教程:Java 提取 Word 文档中的表格

翻译|使用教程|编辑:吉炜炜|2025-02-05 15:57:04.013|阅读 8 次

概述:本文将介绍如何利用 Spire.Doc for Java 在 Java 项目中实现从 Word 文档中提取表格。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

Word 文档中常常有包含关键数据的表格,将这些表格中的数据从文档中提取出来,可以用于进一步分析、报告制作或内容再创作等多种场景。通过使用 Java 来自动化提取 Word 文档中的表格,开发人员能够高效地提取和访问这些结构化数据,并将其转换为适用于数据库、电子表格等的格式,从而方便在不同场景中应用数据。本文将介绍如何利用 Spire.Doc for Java 在 Java 项目中实现从 Word 文档中提取表格。

安装 Spire.Doc for Java

首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。您可以从此链接下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>//repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>13.1.3</version>
    </dependency>
</dependencies>

使用 Java 从 Word 文档中提取表格

借助 Spire.Doc for Java,开发人员可以使用 Section.getTables() 方法从 Word 文档中提取表格,然后再通过遍历行和单元格访问表格数据。提取 Word 文档表格的详细操作步骤如下:

  • 创建一个 Document 对象。
  • 使用 Document.loadFromFile() 方法加载 Word 文档。
  • 使用 Document.getSections() 方法访问文档中的各节并进行遍历。
  • 使用 Section.getTables() 方法访问每个节中的表格并进行遍历。
  • 使用 Table.getRows() 方法访问每个表格中的行并进行遍历。
  • 使用 TableRow.getCells() 方法访问每行中的单元格并进行遍历。
  • 通过遍历每个单元格中的段落,使用 TableCell.getParagraphs() 和 Paragraph.getText() 方法提取文本。
  • 将提取到的表格数据写入 StringBuilder 对象中。
  • 将格式化后的表格内容写入文件或按需使用。
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;

import java.io.FileWriter;
import java.io.IOException;

public class ExtractWordTable {
    public static void main(String[] args) {
        // 创建一个文档对象
        Document doc = new Document();

        try {
            // 加载一个Word文档
            doc.loadFromFile("示例.docx");

            // 遍历文档中的各节
            for (int i = 0; i < doc.getSections().getCount(); i++) {
                // 获取一节
                Section section = doc.getSections().get(i);
                // 遍历该节中的表格
                for (int j = 0; j < section.getTables().getCount(); j++) {
                    // 获取一个表格
                    Table table = section.getTables().get(j);
                    // 收集所有表格内容
                    StringBuilder tableText = new StringBuilder();
                    for (int k = 0; k < table.getRows().getCount(); k++) {
                        // 获取一行
                        TableRow row = table.getRows().get(k);
                        // 遍历行中的单元格
                        StringBuilder rowText = new StringBuilder();
                        for (int l = 0; l < row.getCells().getCount(); l++) {
                            // 获取一个单元格
                            TableCell cell = row.getCells().get(l);
                            // 遍历段落以获取单元格中的文本
                            String cellText = "";
                            for (int m = 0; m < cell.getParagraphs().getCount(); m++) {
                                Paragraph paragraph = cell.getParagraphs().get(m);
                                cellText += paragraph.getText() + " ";
                            }
                            if (l < row.getCells().getCount() - 1) {
                                rowText.append(cellText).append("\t");
                            } else {
                                rowText.append(cellText).append("\n");
                            }
                        }
                        tableText.append(rowText);
                    }

                    // 使用try-with-resources将表格文本写入文件
                    try (FileWriter writer = new FileWriter("output/Tables/Section-" + (i + 1) + "-Table-" + (j + 1) + ".txt")) {
                        writer.write(tableText.toString());
                    }
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
用 Java 提取 Word 表格

将 Word 文档中的表格提取到 Excel 工作表

开发人员还可以结合使用 Spire.Doc for Java 和 Spire.XLS for Java,从 Word 文档中提取表格数据并将其写入 Excel 工作表。首先,需要下载 Spire.XLS for Java 或添加以下 Maven 配置:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>//repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>15.1.3</version>
    </dependency>
</dependencies>

将 Word 文档中的表格提取到 Excel 工作簿的详细步骤如下:


  • 创建一个 Document 对象。
  • 创建一个 Workbook 对象,并使用 Workbook.getWorksheets().clear() 方法移除默认的工作表。
  • 使用 Document.loadFromFile() 方法加载 Word 文档。
  • 使用 Document.getSections() 方法访问文档中的各个节并进行遍历。
  • 使用 Section.getTables() 方法访问每个部分中的表格并进行遍历。
  • 使用 Workbook.getWorksheets().add() 方法为每个表格创建一个工作表。
  • 使用 Table.getRows() 方法访问每个表格中的行并进行遍历。
  • 使用 TableRow.getCells() 方法访问每行中的单元格并进行遍历。
  • 通过遍历每个单元格中的段落,使用 TableCell.getParagraphs() 和 Paragraph.getText() 方法提取文本。
  • 使用 Worksheet.getRange().get(row, column).setValue() 方法将提取的单元格文本写入工作表中的相应单元格。
  • 根据需要设置工作表格式。
  • 使用 Workbook.saveToFile() 方法将工作簿保存为 Excel 文件。
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ExtractWordTableToExcel {
    public static void main(String[] args) {
        // 创建一个文档对象
        Document doc = new Document();

        // 创建一个工作簿对象
        Workbook workbook = new Workbook();
        // 移除默认的工作表
        workbook.getWorksheets().clear();

        try {
            // 加载一个Word文档
            doc.loadFromFile("示例.docx");

            // 遍历文档中的各节
            for (int i = 0; i < doc.getSections().getCount(); i++) {
                // 获取一节
                Section section = doc.getSections().get(i);
                // 遍历该节中的表格
                for (int j = 0; j < section.getTables().getCount(); j++) {
                    // 获取一个表格
                    Table table = section.getTables().get(j);
                    // 为每个表格创建一个工作表
                    Worksheet sheet = workbook.getWorksheets().add("Section-" + (i + 1) + "-Table-" + (j + 1));
                    for (int k = 0; k < table.getRows().getCount(); k++) {
                        // 获取一行
                        TableRow row = table.getRows().get(k);
                        for (int l = 0; l < row.getCells().getCount(); l++) {
                            // 获取一个单元格
                            TableCell cell = row.getCells().get(l);
                            // 遍历段落以获取单元格中的文本
                            String cellText = "";
                            for (int m = 0; m < cell.getParagraphs().getCount(); m++) {
                                Paragraph paragraph = cell.getParagraphs().get(m);
                                if (m > 0 && m < cell.getParagraphs().getCount() - 1) {
                                    cellText += paragraph.getText() + "\n";
                                }
                                else {
                                    cellText += paragraph.getText();
                                }
                                // 将单元格文本写入工作表中对应的单元格
                                sheet.getRange().get(k + 1, l + 1).setValue(cellText);
                            }
                            // 自动调整列宽
                            sheet.autoFitColumn(l + 1);
                        }
                    }
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        // 保存工作簿到文件,指定Excel版本为2016
        workbook.saveToFile("output/WordTableToExcel.xlsx", FileFormat.Version2016);
    }
}
用 Java 提取 Word 表格到 Excel

————————————————————————————————

欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询  ;技术交流Q群(767755948)


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP