C#实现高效读取Word表格数据并导出为CSV/TXT

 更新时间:2026年03月29日 09:03:32   作者:Eiceblue  
在.NET开发场景中,读取 Word 文档中的表格数据是办公自动化、数据导入、报表生成等业务的高频需求,本文将详细介绍如何用 C# 结合 Free Spire.Doc for .NET 库实现 Word 表格读取,有需要的小伙伴可以了解下

前言

在.NET开发场景中,读取 Word 文档中的表格数据是办公自动化、数据导入、报表生成等业务的高频需求。相比于原生操作Office COM组件(兼容性差、依赖环境),Free Spire.Doc for .NET 是一款轻量、免费、无依赖的 Word 操作组件,完美支持 C# 读取、解析 Word(.doc/.docx)格式的表格数据。

本文将详细介绍如何用 C# 结合 Free Spire.Doc for .NET 库实现 Word 表格读取,包含完整代码、核心API解析等。

开发环境准备

1. 基础环境要求

  • Visual Studio 2019+
  • .NET框架:.NET Framework 4.0+ / .NET 6/8(本文示例基于 .NET 6)
  • 支持 Word 格式:.doc / .docx

2. NuGet 安装组件(极简操作)

  • 右键项目 → 管理 NuGet 程序包;
  • 搜索 FreeSpire.Doc
  • 点击安装,自动引用程序集。

命令行安装:Install-Package FreeSpire.Doc

免费版限制:单文档最大500段落、25个表格,满足绝大多数个人/小型项目需求。

核心 API 知识点(必看)

Free Spire.Doc 操作 Word 表格的核心对象,层级关系清晰:

类名作用
Document加载/操作整个 Word 文档
SectionWord 文档的节(容器)
TableWord 表格对象
TableRow表格的行
TableCell表格的单元格
Paragraph.Text获取单元格内的纯文本

读取逻辑:加载文档 → 遍历文档节 → 遍历节内表格 → 遍历行 → 遍历单元格 → 提取文本。

C# 读取 Word 表格完整代码

以下代码演示如何读取 Word 文档中所有表格的数据,并输出到控制台。示例 Word 文档包含两个表格,如下图:

场景1:读取 Word 中所有表格数据

using Spire.Doc;
using System;
namespace ReadWordTable
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 初始化文档对象,加载Word文件
            Document doc = new Document();
            doc.LoadFromFile(@"E:\表格.docx"); // 替换为你的Word路径
            // 2. 遍历Word文档中的所有节
            foreach (Section section in doc.Sections)
            {
                // 3. 遍历当前节中的所有表格
                foreach (Table table in section.Tables)
                {
                    Console.WriteLine("===================== 读取表格数据 =====================");
                    // 4. 遍历表格的每一行
                    foreach (TableRow row in table.Rows)
                    {
                        // 5. 遍历当前行的每一个单元格
                        foreach (TableCell cell in row.Cells)
                        {
                            // 6. 获取单元格文本(去除空字符)
                            string cellText = cell.Paragraphs[0].Text.Trim();
                            Console.Write(cellText + "\t"); // 制表符分隔数据
                        }
                        Console.WriteLine(); // 换行
                    }
                }
            }
            // 释放资源
            doc.Close();
            Console.ReadLine();
        }
    }
}

运行代码后,控制台会按表格行列格式输出所有数据:

场景2:仅读取指定表格数据(精准读取)

也可以直接通过索引获取指定表格,读取其中数据,效率更高:

// 获取【第一个表格】(索引从0开始)
Table targetTable = doc.Sections[0].Tables[0] as Table;

进阶:将 Word 表格数据写入 TXT / CSV 文件

在实际开发中,读取 Word 表格后需要将数据持久化保存,最常用的是导出为 TXT 纯文本CSV 文件

必备命名空间:操作文件需要引入 System.IO,在代码顶部添加:

using System.IO;

示例 1:导出 Word 表格为纯 TXT 文本

特点:纯文本格式,用制表符分隔数据,可读性强,适合简单存储。

using System;
using System.IO;
using Spire.Doc;

namespace ReadWordToTxt
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 加载Word文档
            Document doc = new Document();
            doc.LoadFromFile(@"E:\表格.docx");

            // 2. 设置TXT保存路径
            string txtPath = @"Word表格数据.txt";

            // 3. 创建文件流,写入数据
            using (StreamWriter sw = new StreamWriter(txtPath, false, System.Text.Encoding.UTF8))
            {
                // 遍历所有节、表格、行、单元格
                foreach (Section section in doc.Sections)
                {
                    foreach (Table table in section.Tables)
                    {
                        sw.WriteLine("===================== 表格数据 =====================");
                        foreach (TableRow row in table.Rows)
                        {
                            string rowData = "";
                            foreach (TableCell cell in row.Cells)
                            {
                                // 拼接单元格文本,制表符分隔
                                rowData += cell.Paragraphs[0].Text.Trim() + "\t";
                            }
                            // 写入一行数据
                            sw.WriteLine(rowData);
                        }
                    }
                }
            }

            // 4. 释放资源
            doc.Close();
            Console.WriteLine($"数据已成功写入:{txtPath}");
            Console.ReadLine();
        }
    }
}

生成的Word表格数据.txt文件:

示例 2:导出 Word 表格为 CSV 文件(推荐)

亮点汇总:

  • 自动转义单元格逗号,避免格式错乱
  • UTF-8 编码,彻底解决 Excel 中文乱码
  • 直接双击可用 WPS/Excel 打开做数据分析
using System;
using System.IO;
using Spire.Doc;

namespace ReadWordToCsv
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 加载Word文档
            Document doc = new Document();
            doc.LoadFromFile(@"E:\表格.docx");

            // 2. 设置CSV保存路径
            string csvPath = @"Word表格数据.csv";

            // 3. 写入CSV文件(UTF-8编码,解决中文乱码)
            using (StreamWriter sw = new StreamWriter(csvPath, false, System.Text.Encoding.UTF8))
            {
                foreach (Section section in doc.Sections)
                {
                    foreach (Table table in section.Tables)
                    {
                        foreach (TableRow row in table.Rows)
                        {
                            string rowData = "";
                            foreach (TableCell cell in row.Cells)
                            {
                                string cellText = cell.Paragraphs[0].Text.Trim();
                                // CSV格式优化:文本加双引号,避免单元格内逗号导致格式错乱
                                rowData += $"\"{cellText}\",";
                            }
                            // 去除行尾多余逗号,写入文件
                            sw.WriteLine(rowData.TrimEnd(','));
                        }
                        // 表格之间空行分隔
                        sw.WriteLine();
                    }
                }
            }

            // 4. 释放资源
            doc.Close();
            Console.WriteLine($"数据已成功写入:{csvPath}");
            Console.ReadLine();
        }
    }
}

生成的Word表格数据.csv文件,用 Excel 打开可直接显示规整表格:

至此,我们完成了一套完整的 Word 表格数据读取方案。从文档加载、表格遍历到数据导出,整个过程并不复杂,关键点包含:

  • 对象模型清晰DocumentSectionTableTableRowTableCell 层级分明,按序遍历即可拿到所需内容;
  • 代码简洁直接:无论是控制台输出还是导出 TXT / CSV 文件,核心代码都在 20 行以内,易于理解和维护;
  • 导出格式灵活:TXT 适合快速查看,CSV 则更适合数据交换与后续分析,两者都能满足日常开发需求。

这种方式最大的优势在于轻量、无环境依赖,不需要在服务器或客户端安装 Office 软件,也不涉及 COM 组件的繁琐配置,部署和维护都简单很多。对于大多数需要处理 Word 表格的业务场景——比如数据导入、报表自动化、内容提取等——这套方案足以覆盖常见需求。

如果你在实际项目中遇到更复杂的表格结构(如嵌套表格、不规则合并、单元格内混合内容等),可以在现有逻辑基础上进一步扩展。希望这篇文章能帮你快速上手,少走一些弯路。

到此这篇关于C#实现高效读取Word表格数据并导出为CSV/TXT的文章就介绍到这了,更多相关C#读取Word表格数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 实现计算生辰八字

    C# 实现计算生辰八字

    生辰八字,简称八字,是指一个人出生时的干支历日期;年月日时共四柱干支,每柱两字,合共八个字,故称。生辰八字在汉族民俗信仰中占有重要地位,古代汉族星相家据此推算人的命运的好坏。本文我们就来使用C#来实现计算生辰八字。
    2015-03-03
  • 使用C#代码在Excel文件中添加工作表

    使用C#代码在Excel文件中添加工作表

    在处理现有的 Excel 文件或从零创建 Excel 文件时,我们可能需要添加一个或多个工作表来记录数据,本文将演示如何使用 Spire.XLS for .NET 库在 C# 和 VB.NET 中向 Excel 添加工作表,需要的朋友可以参考下
    2025-11-11
  • C# 通过 oledb 操作Excel实例代码

    C# 通过 oledb 操作Excel实例代码

    本篇文章主要介绍了C# 通过 oledb 操作Excel实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • C#使用Interlocked实现线程同步

    C#使用Interlocked实现线程同步

    今天小编就为大家分享一篇关于C#使用Interlocked实现线程同步,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • C#编程获取资源文件中图片的方法

    C#编程获取资源文件中图片的方法

    这篇文章主要介绍了C#编程获取资源文件中图片的方法,涉及C#针对项目中资源文件操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#8 的模式匹配实现

    C#8 的模式匹配实现

    这篇文章主要介绍了C#8 的模式匹配实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • C#常用类库Dapper详解

    C#常用类库Dapper详解

    Dapper是一款轻量级对象关系映射(ORM)工具,核心目标是“简化数据映射,不牺牲性能与灵活性”,本文给大家介绍C#常用类库Dapper的相关知识,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • C#微信分享代码

    C#微信分享代码

    这篇文章主要为大家详细介绍了C#微信分享的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 对WPF中的TreeView实现右键选定

    对WPF中的TreeView实现右键选定

    这篇文章介绍了WPF实现右键选定TreeView的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#实现将汉字转化为2位大写的16进制Unicode的方法

    C#实现将汉字转化为2位大写的16进制Unicode的方法

    这篇文章主要介绍了C#实现将汉字转化为2位大写的16进制Unicode的方法,分析了转换的技巧并以实例形式给出了具体的转换方法,非常具有实用价值,需要的朋友可以参考下
    2014-12-12

最新评论