使用C#或VB.NET将Excel工作表拆分为独立文件

拾柒
拾柒
发布时间:2026-10-13| 6人浏览过
原创

在处理大型数据集时,Excel文件可能因包含过多工作表(Sheets)而变得臃肿,影响读取和查询效率。本文将通过C#和VB.NET两种语言,演示如何利用 Free Spire.XLS for .NET 库将包含多个工作表的Excel文档自动拆分为独立的子文件,提升数据管理灵活性。

环境准备与库安装

本示例基于 .NET 环境,核心依赖第三方组件 Free Spire.XLS for .NET。该库支持无需安装 Microsoft Office 即可处理 Excel 文件。推荐使用 NuGet 进行安装:

方法一:通过 NuGet 包管理器控制台安装

Install-Package FreeSpire.XLS -Version 12.7

方法二:手动引用 DLL

  • 下载并解压安装包,进入目录找到 Spire.Xls.dll。
  • 在 Visual Studio 中右键点击项目引用,选择“添加引用”,浏览至 DLL 路径引入即可。

实现逻辑

拆分过程的核心逻辑如下:

  1. 加载源文件:读取包含多个工作表的原始 Excel 文档。
  2. 遍历工作表:获取文档中所有 Sheet 的集合。
  3. 创建新副本:针对每个 Sheet,初始化一个新的空白 Workbook。
  4. 复制与保存:将当前 Sheet 复制到新 Workbook 中,删除默认生成的 Sheet,并按原 Sheet 名称保存为新文件。

第1步:配置输出路径与命名

确定存放拆分后文件的文件夹路径,建议路径以反斜杠结尾。文件名将沿用原工作表的 Name 属性,确保标识清晰。

第2步:编写C#拆分代码

C# 版本代码逻辑严谨,通过循环逐一提取工作表:

using Spire.Xls;
using System;

namespace SplitWorksheets
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 创建Workbook对象
            Workbook wb = new Workbook();
            
            // 2. 加载示例 Excel 文件
            wb.LoadFromFile("企业营业数据表.xlsx");
            
            // 定义变量
            Workbook newWb;
            String sheetName;
            
            // 指定输出路径,注意末尾需加转义的反斜杠
            String folderPath = "C:\\Users\\Tina\\Desktop\\输出结果\\";
            
            // 3. 循环遍历源文件中的所有工作表
            for (int i = 0; i < wb.Worksheets.Count; i++)
            {
                // 4. 初始化新Workbook对象
                newWb = new Workbook();
                
                // 清理默认生成的第一个Sheet
                newWb.Worksheets.Clear();
                
                // 5. 将源文档的第i个Sheet复制到新工作簿
                newWb.Worksheets.AddCopy(wb.Worksheets[i]);
                
                // 6. 获取Sheet名称作为文件名
                sheetName = wb.Worksheets[i].Name;
                
                // 7. 保存为新的Excel文件,格式兼容Office 2013
                newWb.SaveToFile(folderPath + sheetName + ".xlsx", ExcelVersion.Version2013);
            }
        }
    }
}

第3步:编写VB.NET拆分代码

VB.NET 语法结构类似,注意字符串连接符及循环边界处理:

Imports Spire.Xls

Namespace SplitWorksheets
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            ' 创建Workbook对象
            Dim wb As Workbook = New Workbook()
            ' 加载Excel文件
            wb.LoadFromFile("企业营业数据表.xlsx")
            
            Dim newWb As Workbook
            Dim sheetName As String
            ' 设置输出文件夹路径
            Dim folderPath = "C:\Users\Tina\Desktop\输出结果\"
            
            ' 遍历所有工作表
            For i As Integer = 0 To wb.Worksheets.Count - 1
                newWb = New Workbook()
                ' 清空默认Sheet
                newWb.Worksheets.Clear()
                
                ' 复制当前Sheet
                newWb.Worksheets.AddCopy(wb.Worksheets(i))
                
                ' 获取名称并保存
                sheetName = wb.Worksheets(i).Name
                newWb.SaveToFile(folderPath & sheetName & ".xlsx", ExcelVersion.Version2013)
            Next
        End Sub
    End Class
End Namespace

注意事项与排错

  • 路径权限:确保代码运行账户对目标文件夹(如示例中的桌面路径)拥有写入权限,否则会在调用 SaveToFile 时报 UnauthorizedAccessException。
  • 文件占用:如果指定的输出路径中已存在同名文件,且被其他程序打开,也会导致保存失败。建议每次运行前清理输出目录。
  • 路径修正:示例中的 C:\\Users\\... 仅为测试路径,实际部署时请修改为可访问的真实绝对路径或相对路径。

总结

通过上述 C# 或 VB.NET 代码,您可以高效地批量处理 Excel 工作表拆分任务,无需人工逐个保存。对于数据量庞大、工作表较多的报表系统,这种自动化处理方式能显著减轻服务器压力并优化数据流转效率。

以上就是使用C#/VB.NET将Excel工作表拆分为独立文件的详细内容,更多关于C# Excel自动化处理的操作技巧请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。