C# 如何实现 Word 转 Excel ?分享两种实用方法

在实际项目里,经常碰到这种需求:客户发来一份 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个) 方法二里加上 breakcontinue 判断

两种方法的核心都是利用 SaveToFile(..., FileFormat.XLSX),区别在于准备文档内容的方式不同。方法一直接转换原文档,方法二则通过创建临时文档、提取表格并分节再转换。


结语

本文介绍了在 C# 中将 Word 文档转换为 Excel 文件的两种简便方法。整体转换方式代码极简,适合快速迁移整份文档;而表格拆分方式则能够灵活地将每个表格放入独立的工作表,满足数据分类处理的需求。开发者可根据实际业务场景选择合适的方法,并结合节与工作表的映射关系,进一步定制输出结构。

两种方法均无需依赖 Microsoft Office 组件,可以轻松集成到 Windows 服务、控制台应用或 Web 后端中,实现稳定高效的文档格式转换功能。

相关推荐
天才少女爱迪生5 小时前
word格式规范检测+自动修改【python】
python·c#·word
gc_22995 小时前
学习C#调用OpenXml操作word文档的基本用法(29:学习中断类)
word·中断·openxml·break
用户3721574261355 小时前
如何使用 C# 转换 PowerPoint 为 HTML:完整指南
c#
软泡芙6 小时前
【C# 】各种等待大全:从入门到精通
开发语言·c#·log4j
梅孔立7 小时前
Aspose.Words Java 表格动态删列、合并列、表头重建、全局字体统一解决方案
java·开发语言·word·aspose·在线编辑
夏霞7 小时前
IIS 应用程序池 3 种标识:ApplicationPoolIdentity / LocalSystem / LocalService 权限区别(超清晰)
c#·.net
SteveDraw7 小时前
常见的设计模式及工业场景下应用(更新中)
设计模式·c#·编码规范·gof23
SunnyDays10117 小时前
如何使用 C# 转换 PowerPoint 为 HTML:完整指南
人工智能·opencv·计算机视觉·c#
weixin_5206498716 小时前
WinForm数据展示组件ListView
c#