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表格数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论