前言
在.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 文档 |
| section | word 文档的节(容器) |
| table | word 表格对象 |
| 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 表格数据读取方案。从文档加载、表格遍历到数据导出,整个过程并不复杂,关键点包含:
- 对象模型清晰:
document、section、table、tablerow、tablecell层级分明,按序遍历即可拿到所需内容; - 代码简洁直接:无论是控制台输出还是导出 txt / csv 文件,核心代码都在 20 行以内,易于理解和维护;
- 导出格式灵活:txt 适合快速查看,csv 则更适合数据交换与后续分析,两者都能满足日常开发需求。
这种方式最大的优势在于轻量、无环境依赖,不需要在服务器或客户端安装 office 软件,也不涉及 com 组件的繁琐配置,部署和维护都简单很多。对于大多数需要处理 word 表格的业务场景——比如数据导入、报表自动化、内容提取等——这套方案足以覆盖常见需求。
如果你在实际项目中遇到更复杂的表格结构(如嵌套表格、不规则合并、单元格内混合内容等),可以在现有逻辑基础上进一步扩展。希望这篇文章能帮你快速上手,少走一些弯路。
到此这篇关于c#实现高效读取word表格数据并导出为csv/txt的文章就介绍到这了,更多相关c#读取word表格数据内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论