当前位置:首页 > 行业动态 > 正文

C如何高效提取Word文档中的全部表格?代码实战解析

本文介绍使用C#读取Word文档内表格的两种方法,通过Microsoft.Office.Interop.Word或Open XML SDK库实现,详细演示文档解析、表格遍历及内容提取过程,适用于自动化报表处理等场景,提供完整代码示例与关键API说明。

在C#中提取Word文档中的表格数据是处理办公自动化、数据分析或文档管理时的常见需求,本文将提供一套完整的代码实现方案,基于Microsoft Open XML SDK(官方推荐库)完成操作,确保高效性与兼容性,以下是具体步骤与代码示例:


环境准备

  1. 安装NuGet包
    在Visual Studio中安装以下NuGet包:

    Install-Package DocumentFormat.OpenXml
    Install-Package System.IO.Packaging
  2. 引用命名空间

    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Wordprocessing;
    using System.Collections.Generic;

核心代码实现

public List<Table> GetAllTablesFromWord(string filePath)
{
    List<Table> tables = new List<Table>();
    // 打开Word文档(支持.docx格式)
    using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, false))
    {
        // 获取文档主体
        Body body = doc.MainDocumentPart?.Document.Body;
        if (body != null)
        {
            // 遍历所有子元素,筛选出表格对象
            foreach (var element in body.Elements())
            {
                if (element is Table table)
                {
                    tables.Add(table);
                }
            }
        }
    }
    return tables;
}

代码解析

  1. 文件读取与安全操作

    • 使用using语句确保文档资源释放,避免内存泄漏。
    • WordprocessingDocument.Open方法中第二个参数false表示以只读模式打开文件,防止意外修改。
  2. 表格遍历逻辑

    • Word文档的正文内容存储在MainDocumentPart.Document.Body中。
    • 通过遍历Body.Elements()并过滤Table类型对象,精准定位所有表格。
  3. 返回值与扩展性

    • 返回List<Table>集合,用户可后续操作表格内容(如读取单元格数据、修改样式等)。

异常处理增强

添加文件校验与错误捕获,提升代码健壮性:

public List<Table> GetAllTablesSafely(string filePath)
{
    try
    {
        if (!File.Exists(filePath))
            throw new FileNotFoundException("Word文件不存在");
        if (Path.GetExtension(filePath).ToLower() != ".docx")
            throw new ArgumentException("仅支持.docx格式");
        return GetAllTablesFromWord(filePath);
    }
    catch (Exception ex)
    {
        // 记录日志或抛出自定义异常
        Console.WriteLine($"读取失败:{ex.Message}");
        return new List<Table>();
    }
}

典型应用场景

  1. 数据批量导出
    将表格内容导出至Excel或数据库。
  2. 文档自动化检查
    校验表格格式是否符合规范,分析**
    提取表格中的关键字段进行统计分析。

注意事项

  • 兼容性:此方案仅支持.docx格式(Office 2007及以上版本)。
  • 性能优化:处理大型文档时建议异步操作,避免界面卡顿。
  • 读取:若需获取表格内文本,可通过遍历TableRowTableCell实现:
    foreach (TableRow row in table.Elements<TableRow>())
    {
        foreach (TableCell cell in row.Elements<TableCell>())
        {
            string cellText = cell.InnerText;
        }
    }

引用说明
本文代码基于Microsoft Open XML SDK官方文档实现,确保了代码的权威性与可维护性。

0