在实际项目里,经常碰到这种需求:客户发来一份 Word 报告,里面有好几个数据表格,或者整篇文档需要转成 Excel 做进一步处理。如果手动复制粘贴,不仅慢,还容易出错,而借助 Spire.Doc for .NET 库都可以在不安装 Microsoft Office 的前提下,通过少量代码实现转换。
本文将分别介绍两种转换方式:
- 极简全局转换:将整个 Word 文档直接转换为 Excel 单工作表;
- 表格精准提取:提取 Word 内所有表格,每个表格独立生成一个 Excel 工作表。
环境准备
通过 NuGet 安装 Spire.Doc 包:
powershell
Install-Package Spire.Doc
这个库同时支持 .doc 和 .docx 格式,转换到 Excel 时直接输出 .xlsx 格式。
方法一:直接将整个 Word 文档保存为 Excel
如果希望将 Word 文档中的所有内容(包括段落文本、表格、图片等)按原有顺序输出到一个 Excel 工作表中,可以使用 Document.SaveToFile 方法并指定 FileFormat.XLSX。
该方案是最简洁的实现方式,仅需核心两行代码即可完成格式转换。
csharp
using Spire.Doc;
namespace WordToExcel
{
class Program
{
static void Main(string[] args)
{
// 加载 Word 文档
Document document = new Document();
document.LoadFromFile(@"F:\实验.docx");
// 直接保存为 Excel 文件
document.SaveToFile(@"F:\输出.xlsx", FileFormat.XLSX);
// 释放资源
document.Dispose();
}
}
}
它做了什么?
- 文档中的段落会被转换为 Excel 单元格中的文本,自动换行保留。
- 表格会映射为 Excel 中的单元格区域,保留基本结构和内容。
- 图片会被放置在对应行的单元格中。
什么情况下用这个方法?
- 文档排版相对规整(如线性段落、简单表格)。
- 只是一次性转换,不要求每个表格单独成页。
- 文档里除了表格还有大段说明文字,需要保留。
生成示例:

注意点:
- 转换后的 Excel 只包含一个工作表,所有内容依次排列。
- 复杂排版(多栏、文本框、浮动对象)可能出现位置偏差。
方法二:将每个 Word 表格导出为独立工作表
很多实际场景是这样的:Word 里有好几个数据表,比如"1月销售表"、"2月销售表"、"客户名单",你想要的是每个表分别放在 Excel 的不同工作表中,方便后续用透视表分析。
直接保存做不到这一点,但我们可以通过遍历文档的节和表格,为每个表格创建一个临时节(Section),再将临时文档保存为 Excel 来完成。
原理 :Spire.Doc 在保存为 Excel 时,会将文档中的每一个 节(
Section) 转换为 Excel 中的一个工作表。
csharp
using Spire.Doc;
class Program
{
static void Main()
{
// 加载源 Word 文档
Document doc = new Document();
doc.LoadFromFile(@"F:\表格.docx");
// 创建临时文档,用于存放提取的表格
Document tempDoc = new Document();
// 遍历源文档的所有节
foreach (Section section in doc.Sections)
{
// 遍历当前节中的所有表格
foreach (Table table in section.Tables)
{
// 为每个表格创建新节(每个节最终对应一个工作表)
Section tempSec = tempDoc.AddSection();
// 克隆表格并添加到新节中
tempSec.Tables.Add(table.Clone());
}
}
// 保存为 Excel 文件
tempDoc.SaveToFile("Word表格.xlsx", FileFormat.XLSX);
doc.Dispose();
tempDoc.Dispose();
}
}
代码说明:
- 通过两层
foreach获取每个Section中的每个Table。 - 使用
table.Clone()进行深拷贝,避免影响原文档结构。 - 临时文档每添加一个
Section,最终 Excel 中就多一个工作表。工作表名称默认依次为 Sheet1、Sheet2......。 - 临时文档中只包含表格,不保留段落的普通文本。
什么情况下用这个方法?
- Word 文档中包含多个结构相同或不同的数据表格,需要分别导出到 Excel 的不同工作表。
- 希望每个表格独立成页,便于数据分析或生成报表。
- 忽略文档中的描述性文字,只保留表格数据。
效果图:

两种方法怎么选?对比与建议
| 需求 | 推荐方法 |
|---|---|
| 快速将整份 Word 转为 Excel,保留原貌 | 直接保存(方法一) |
| 提取所有表格,每个表格一个工作表 | 表格拆分(方法二) |
| 只需要部分表格(比如只导出前10个) | 方法二里加上 break 或 continue 判断 |
两种方法的核心都是利用 SaveToFile(..., FileFormat.XLSX),区别在于准备文档内容的方式不同。方法一直接转换原文档,方法二则通过创建临时文档、提取表格并分节再转换。
结语
本文介绍了在 C# 中将 Word 文档转换为 Excel 文件的两种简便方法。整体转换方式代码极简,适合快速迁移整份文档;而表格拆分方式则能够灵活地将每个表格放入独立的工作表,满足数据分类处理的需求。开发者可根据实际业务场景选择合适的方法,并结合节与工作表的映射关系,进一步定制输出结构。
两种方法均无需依赖 Microsoft Office 组件,可以轻松集成到 Windows 服务、控制台应用或 Web 后端中,实现稳定高效的文档格式转换功能。