商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > C#实现Word转Excel的两种实用方法分享

C#实现Word转Excel的两种实用方法分享

  发布于2026-07-08 阅读(0)

扫一扫,手机访问

引言

在实际项目里头,经常碰到这种需求:客户发来一份 Word 报告,里面有好几个数据表格,或者整篇文档需要转成 Excel 做进一步处理。要是手动复制粘贴,不仅慢,还容易出错。借助 Spire.Doc for .NET 这个库,可以在不安装 Microsoft Office 的前提下,用少量代码把这事儿搞定。

这次就分享两种转换思路:

  • 极简全局转换:把整个 Word 文档直接转成一个 Excel 工作表,适合快速迁移。
  • 表格精准提取:把 Word 里的每个表格单独拎出来,各占一个 Excel 工作表,方便数据分类。

环境准备

通过 NuGet 安装 Spire.Doc 包,命令行敲一行就行:

Install-Package Spire.Doc

这个库同时支持 .doc.docx 两种格式,转换输出是 .xlsx

方法一:直接把整个 Word 文档保存成 Excel

如果希望把 Word 文档里的所有内容——段落文字、表格、图片这些——按原有顺序一股脑儿输出到一个 Excel 工作表中,直接用 Document.Sa veToFile 方法,指定 FileFormat.XLSX 就行。

这个方案最简洁,核心代码就两行,一加载一保存,完事儿。

using Spire.Doc;

namespace WordToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载 Word 文档
            Document document = new Document();
            document.LoadFromFile(@"F:\实验.docx");

            // 直接保存为 Excel 文件
            document.Sa veToFile(@"F:\输出.xlsx", FileFormat.XLSX);

            // 释放资源
            document.Dispose();
        }
    }
}

这里面发生了什么?

  • 段落被转成 Excel 单元格中的文本,自动换行会保留下来。
  • 表格直接映射为 Excel 里的单元格区域,结构和内容都保留。
  • 图片会放在对应行的单元格里,位置基本不走样。

什么时候用这个方法?

  • 文档排版比较规整,比如线性段落加简单表格,没什么复杂布局。
  • 只是临时一次性转换,不要求每个表格单独占据一个工作表。
  • 文档里除了表格还有不少说明文字,需要一并保留。

C#实现Word转Excel的两种实用方法分享

得留个心:

  • 转换后的 Excel 只有一个工作表,所有内容按顺序往下排列。
  • 如果文档里有复杂排版——比如多栏、文本框、浮动对象——可能出现位置偏差,得手动微调。

方法二:把每个 Word 表格导出为独立工作表

很多实际场景是这样:Word 里有好几个表格,比如“1月销售表”、“2月销售表”、“客户名单”,希望每个表格分别放在 Excel 的不同工作表里,方便后面用透视表分析。

直接保存做不到这一点,不过我们可以遍历文档的节和表格,为每个表格创建一个临时节(Section),再把临时文档保存成 Excel 就行了。

原理很简单:Spire.Doc 在保存为 Excel 时,会把文档中的每一个 节(Section 转成 Excel 中的一个工作表。

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.Sa veToFile("Word表格.xlsx", FileFormat.XLSX);
        
        doc.Dispose();
        tempDoc.Dispose();
    }
}

代码说明:

  • 通过两层 foreach,一层遍历节,一层遍历节里的表格,能抓到所有表格。
  • table.Clone() 做深拷贝,不伤原文档结构。
  • 临时文档每加一个 Section,最终 Excel 里就多一个工作表。工作表名称默认是 Sheet1、Sheet2……
  • 临时文档里只放表格,原文档里的段落文字不会被带过来。

什么时候用这个方法?

  • Word 文档里有多个结构相同或不同的表格,需要分别导出到不同工作表。
  • 希望每个表格独立成页,方便数据分析或生成报表。
  • 只关心表格数据,文档里的描述性文字可以忽略。

C#实现Word转Excel的两种实用方法分享

两种方法怎么选?对比与建议

需求 推荐方法
快速把整份 Word 转成 Excel,保留原样 直接保存(方法一)
提取所有表格,每个表格一个工作表 表格拆分(方法二)
只需要部分表格(比如只导出前10个) 方法二里加上 breakcontinue 判断

两种方法的核心都是 Sa veToFile(..., FileFormat.XLSX),区别在于准备文档内容的方式不同。方法一直接转换原文档,省心省力;方法二通过创建临时文档、提取表格并分节再转换,灵活度更高。

结语

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

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

本文转载于:https://www.jb51.net/program/363237quj.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注