使用 C# 将 Excel 工作表拆分为多个文件

发布: (2026年1月6日 GMT+8 10:59)
5 min read
原文: Dev.to

Source: Dev.to

(请提供您想要翻译的文章正文内容,我将为您翻译成简体中文并保留原始的格式、代码块和链接。)

介绍

在现代数据处理工作流中,将包含多个工作表的 Excel 文件拆分为单个工作表文件是一项普遍需求——无论是用于分发部门特定的财务报告、共享班级特定的学生成绩单,还是组织分段数据集。手动拆分既繁琐又耗时,而且容易出现人为错误,导致数据不一致。

使用 C# 自动化此过程是提升生产力的最佳方案,而 Free Spire.XLS——一款轻量级且功能强大的 .NET 库——让这一切变得前所未有的简单,并且 无需安装 Microsoft Office

本指南将带您完整了解使用 C# 和 Free Spire.XLS 拆分 Excel 工作表的整个过程。我们将涵盖:

  • 项目设置
  • 核心代码实现
  • 高级用例
  • 替代库

技术栈概览

  • 语言: C#
  • 框架: .NET Framework 4.0+、.NET Core 3.1+、.NET 5+
  • : Free Spire.XLS (NuGet)
  • IDE: Visual Studio 2019+、Rider、VS Code,或任何 C# IDE

为什么选择 Free Spire.XLS?

Free Spire.XLS 是一款免费的 .NET Excel 组件,旨在实现无缝的 Excel 文件操作。与传统方案如 Microsoft Office Interop 相比,它提供了三个关键优势:

优势描述
无 Office 依赖在服务器或客户端机器上无需安装 Microsoft Office,即可运行,消除兼容性和授权问题。
功能丰富支持创建、编辑、转换和拆分 Excel 文件(.xls.xlsx),并完整保留数据、公式、样式和格式。
高性能为批量处理和服务器端自动化进行优化,在速度和稳定性方面优于 Interop。

前置条件

要跟随操作,请确保您的开发环境满足以下要求:

  • .NET Framework 4.0+ / .NET Core 3.1+ / .NET 5+
  • 免费的 Spire.XLS NuGet 包(建议使用最新版本)
  • Visual Studio 2019+ / Rider / VS Code(或任何 C# IDE)

Source:

步骤式实现

1. 项目设置

  1. 在 IDE 中创建一个新的 C# 控制台应用 项目。

  2. 通过 NuGet 安装 Free Spire.XLS:

    • Package Manager Console

      Install-Package FreeSpire.XLS
    • GUI 方法
      右键单击项目 → 管理 NuGet 包 → 搜索 “FreeSpire.XLS” → 安装

2. 核心代码实现(附详细说明)

核心逻辑包括:

  1. 加载源 Excel 文件。
  2. 遍历其工作表。
  3. 将每个工作表复制到新的工作簿。
  4. 保存新文件。
using Spire.Xls;
using System;
using System.IO;

namespace ExcelWorksheetSplitter
{
    class Program
    {
        static void Main(string[] args)
        {
            // -------------------------------------------------
            // 1️⃣ 配置文件路径(根据你的环境进行更新)
            // -------------------------------------------------
            string sourceFilePath = "source.xlsx"; // 多工作表 Excel 文件的路径
            string outputDirectory = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                "SplitWorksheets");

            try
            {
                // -------------------------------------------------
                // 2️⃣ 加载源工作簿
                // -------------------------------------------------
                using (Workbook sourceWorkbook = new Workbook())
                {
                    sourceWorkbook.LoadFromFile(sourceFilePath);

                    // -------------------------------------------------
                    // 3️⃣ 确保输出文件夹存在
                    // -------------------------------------------------
                    Directory.CreateDirectory(outputDirectory);

                    // -------------------------------------------------
                    // 4️⃣ 遍历所有工作表
                    // -------------------------------------------------
                    for (int i = 0; i  file.EndsWith(".xlsx") || file.EndsWith(".xls"))
                                   .ToArray();

    foreach (string file in excelFiles)
    {
        Console.WriteLine($"Processing file: {Path.GetFileName(file)}");
        SplitSingleExcelFile(file,
            Path.Combine(outputFolder, Path.GetFileNameWithoutExtension(file)));
    }
}

// 可复用的方法,用于拆分单个 Excel 文件
static void SplitSingleExcelFile(string sourceFilePath, string outputFolder)
{
    using (Workbook wb = new Workbook())
    {
        wb.LoadFromFile(sourceFilePath);
        Directory.CreateDirectory(outputFolder);

        foreach (Worksheet sheet in wb.Worksheets)
        {
            using (Workbook newWb = new Workbook())
            {
                newWb.Worksheets.Clear();
                newWb.Worksheets.AddCopy(sheet);
                newWb.SaveToFile(
                    Path.Combine(outputFolder, $"{sheet.Name}.xlsx"),
                    ExcelVersion.Version2016);
            }
        }
    }
}

替代库(比较)

优点缺点最佳适用场景
Free Spire.XLS无需 Office 依赖,完整格式支持,API 简单易用免费版有一定限制快速开发,服务器端自动化
EPPlus开源,轻量,适用于 .xlsx不支持 .xls简单的 .xlsx 拆分任务
NPOI开源,无水印,完整格式支持学习曲线较陡高级 Excel 操作
Microsoft Office Interop原生 Office 集成需要安装 Office,在服务器上不稳定仅限桌面应用
ClosedXML直观的 API,开源不支持 .xls现代 .xlsx 工作流

使用 C# 和 Free Spire.XLS 拆分 Excel 工作表是一种直接且高效的方式来自动化重复的数据处理任务。无论您是构建服务器端自动化工具还是桌面应用,Free Spire.XLS 都提供可靠的解决方案,以简化您的 Excel 工作流。

Back to Blog

相关文章

阅读更多 »

在 C# 中将 RTF 转换为 PDF

概述 RTF(Rich Text Format)是一种跨平台的格式,广泛用于文档编辑和数据交换。相比之下,PDF 则是文档分发的理想选择……