C#结合Spire.Doc实现自动化提取Word表格数据

 更新时间:2025年11月11日 10:10:59   作者:咕白m625  
在日常办公和开发中,我们经常需要从Word文档中提取表格数据进行二次处理,下面我们就来看看C#如何结合Spire.Doc库实现Word表格的提取并将提取的内容保存为文本文件吧

在日常办公和开发中,我们经常需要从Word文档中提取表格数据进行二次处理(如导入数据库、数据分析等)。本文将介绍如何使用C#结合Spire.Doc库实现Word表格的提取,并将提取的内容保存为文本文件。

工具与环境准备

要实现Word表格提取,我们需要以下工具和组件:

  • 开发环境:Visual Studio(或其他 C# 开发工具)
  • .NET Framework/.NET Core(本文代码兼容主流版本)
  • 第三方库:Spire.Doc(用于解析 Word 文档结构,处理表格数据)

Spire.Doc 是一个功能强大的Word文档处理库,支持读取、编辑、生成Word文档,尤其对表格、段落等元素的处理非常便捷。我们可以通过 NuGet 包管理器安装它:在项目中右键“管理NuGet包”,搜索 “Spire.Doc” 并安装。

如何通过 C# 提取 Word 表格

实现思路

从Word中提取表格的核心思路是“逐层解析文档结构”:

  • 加载Word文档,获取文档对象
  • 遍历文档中的“节(Section)”(Word文档的基本结构单位)
  • 在每个节中获取表格集合,遍历所有表格
  • 对每个表格,逐行、逐单元格提取文本内容
  • 将提取的表格数据按格式保存到文本文件

完整代码

以下是提取Word表格的完整代码,我们将逐步解析其核心逻辑:

using Spire.Doc;
using Spire.Doc.Collections;
using Spire.Doc.Interface;
using System.IO;
using System.Text;

namespace ExtractWordTable
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建文档对象
            Document doc = new Document();
            // 加载Word文档
            doc.LoadFromFile("Tables.docx");

            // 遍历文档中的所有节
            for (int sectionIndex = 0; sectionIndex < doc.Sections.Count; sectionIndex++)
            {
                Section section = doc.Sections[sectionIndex];

                // 获取当前节中的所有表格
                TableCollection tables = section.Tables;

                // 遍历当前节中的所有表格
                for (int tableIndex = 0; tableIndex < tables.Count; tableIndex++)
                {
                    ITable table = tables[tableIndex];

                    // 用于存储当前表格的所有数据
                    string tableData = "";

                    // 遍历表格中的所有行
                    for (int rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++)
                    {
                        TableRow row = table.Rows[rowIndex];
                        // 遍历行中的所有单元格
                        for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++)
                        {
                            TableCell cell = row.Cells[cellIndex];

                            // 提取单元格文本(单元格可能包含多个段落)
                            string cellText = "";
                            for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++)
                            {
                                cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " ");
                            }

                            // 拼接单元格文本,用制表符分隔不同单元格
                            tableData += cellText.Trim();
                            if (cellIndex < row.Cells.Count - 1)
                            {
                                tableData += "\t";
                            }
                        }

                        // 行结束后换行
                        tableData += "\n";
                    }

                    // 保存表格数据到文本文件)
                    string filePath = Path.Combine("Tables", $"Section{sectionIndex + 1}_Table{tableIndex + 1}.txt");
                    File.WriteAllText(filePath, tableData, Encoding.UTF8);
                }
            }

            doc.Close();
        }
    }
}

代码核心逻辑解析

1. 遍历文档结构

Word 文档的结构是“文档(Document)→ 节(Section)→ 表格(Table)→ 行(Row)→ 单元格(Cell)”,因此我们需要逐层遍历:

  • 节(Section) :一个Word文档可以包含多个节(如不同的页面设置、分栏等),通过doc.Sections获取所有节。
  • 表格(Table) :每个节中可能包含多个表格,通过section.Tables获取当前节的表格集合。

2. 提取单元格文本

单元格(TableCell)中的内容可能包含多个段落(Paragraph),因此需要遍历所有段落并拼接文本:

string cellText = "";
for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++)
{
    cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " ");
}

使用 Trim() 去除文本前后的空白,避免多余空格影响格式。

实用扩展方向

基于本文代码,可进一步扩展功能,满足更多场景需求:

  • 将提取的表格数据导出为 Excel 文件(结合 Spire.XLS 库)
  • 对提取的文本进行清洗(如去除特殊符号、格式转换)
  • 批量处理多个Word文档(遍历文件夹中的所有.docx文件)

通过上述方法,我们可以高效地从 Word 文档中提取表格数据,为后续的数据处理提供便利。相比原生 Office Interop,Spire.Doc 无需依赖 Office 客户端,运行更轻量化;代码逻辑清晰,可直接复用或二次开发。

到此这篇关于C#结合Spire.Doc实现自动化提取Word表格数据的文章就介绍到这了,更多相关C#提取Word表格数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c#版json数据解析示例分享

    c#版json数据解析示例分享

    JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。 JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成
    2014-03-03
  • 使用C#代码在Excel中获取工作表名称的操作指南

    使用C#代码在Excel中获取工作表名称的操作指南

    在 Excel 中,工作表名称可以作为工作簿内容的一种元数据,通过获取这些名称的列表,可以大致了解每个工作表的用途,本文将介绍如何使用 Spire.XLS for .NET 在 C# 中获取 Excel 工作表名称,需要的朋友可以参考下
    2026-01-01
  • Unity实现3D射箭小游戏

    Unity实现3D射箭小游戏

    这篇文章主要为大家详细介绍了Unity实现3D射箭小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • WPF实现雷达图(仿英雄联盟)的示例代码

    WPF实现雷达图(仿英雄联盟)的示例代码

    这篇文章主要介绍了如何利用WPF实现雷达图(仿英雄联盟)的绘制,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-07-07
  • 深入理解C#表达式树的使用

    深入理解C#表达式树的使用

    表达式树是C#编程语言中一个强大的特性,本文将深入探讨表达式树的基本概念、创建方法、节点类型、遍历技巧以及在C#中的应用示例,感兴趣的可以了解一下
    2024-03-03
  • c#使用ManagedWifi查看当前Wifi信号并选择wifi的示例

    c#使用ManagedWifi查看当前Wifi信号并选择wifi的示例

    这篇文章主要介绍了c#使用ManagedWifi查看当前Wifi信号并选择wifi的示例,需要的朋友可以参考下
    2014-04-04
  • 自定义WPF分页控件的全过程记录

    自定义WPF分页控件的全过程记录

    接触WPF也有一段时间了,最近遇到了一个自定义分页控件的功能,感觉可以分享下面,所以这篇文章主要介绍了自定义WPF分页控件的相关资料,需要的朋友可以参考下
    2021-05-05
  • C#如何实现Excel中图片的提取与本地保存方法

    C#如何实现Excel中图片的提取与本地保存方法

    这篇文章主要介绍了C#实现Excel中图片的提取与本地保存方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • C#监控文件夹变化的方法

    C#监控文件夹变化的方法

    这篇文章主要介绍了C#监控文件夹变化的方法,通过FileSystemWatcher类的方法来实现对文件夹的监控,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • C#代码实现将Excel中的图表转换为图片

    C#代码实现将Excel中的图表转换为图片

    图表通常用于 Microsoft Excel 文件中,以可视化展示数值数据,本文将演示如何使用 Spire.XLS for .NET,通过 C# 和 VB.NET 将 Excel 中的图表转换为图片,感兴趣的小伙伴可以了解下
    2025-12-12

最新评论