C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#拆分Excel工作表

C#实现将Excel工作表拆分为独立文件

作者:缺点内向

在日常数据处理中,你是否经常遇到需要将一个包含多个工作表的Excel文件,根据每个工作表的内容,分别保存成独立的Excel文件,下面小编就来和大家讲讲如何使用C#实现这一功能吧

在日常数据处理中,你是否经常遇到需要将一个包含多个工作表的Excel文件,根据每个工作表的内容,分别保存成独立的Excel文件?例如,一个包含全国各省销售数据的总表,需要拆分成每个省份一个独立的Excel文件,以便分发给各省负责人。手动操作不仅繁琐,效率低下,而且容易出错。本文将为你提供一个高效、自动化的C#解决方案,让你轻松实现这一目标,而这一切都将借助强大的 Spire.XLS for .NET 库来完成。

为什么需要拆分Excel工作表

将一个多工作表的Excel文件拆分为多个独立文件,在实际工作中有着广泛的应用场景和明确的需求:

手动逐个复制粘贴工作表并保存无疑是耗时耗力的,尤其当工作表数量众多时,这种方法几乎不可行。因此,一个自动化的解决方案显得尤为重要。

Spire.XLS for .NET:高效解决方案

为了在C#中高效、便捷地实现Excel工作表拆分,我们将使用 Spire.XLS for .NET 库。这是一个功能强大且易于使用的Excel处理组件,专为.NET开发者设计,它具有以下显著优势:

如何安装Spire.XLS for .NET?

在你的C#项目中,通过NuGet包管理器安装Spire.XLS for .NET非常简单。你可以在Visual Studio的“NuGet包管理器控制台”中执行以下命令:

Install-Package Spire.XLS

或者,通过“管理NuGet程序包”界面搜索“Spire.XLS”并安装。

C#代码实战:一步步拆分Excel工作表

下面我们将通过一个完整的C#代码示例,演示如何加载一个包含多个工作表的Excel文件,并将其中的每个工作表保存为独立的Excel文件。

using Spire.Xls;
using System;
using System.IO;

namespace ExcelSplitter
{
    class Program
    {
        static void Main(string[] args)
        {
            // 定义源Excel文件路径和输出目录
            string inputFilePath = "C:\\Users\\YourUser\\Desktop\\MultiSheetExcel.xlsx"; // 请替换为你的源文件路径
            string outputDirectory = "C:\\Users\\YourUser\\Desktop\\SplitExcelFiles"; // 请替换为你的输出目录

            // 检查源文件是否存在
            if (!File.Exists(inputFilePath))
            {
                Console.WriteLine($"错误:源文件 '{inputFilePath}' 不存在。");
                Console.ReadKey();
                return;
            }

            // 确保输出目录存在,如果不存在则创建
            if (!Directory.Exists(outputDirectory))
            {
                Directory.CreateDirectory(outputDirectory);
            }

            try
            {
                // 1. 加载源Excel文件
                Workbook originalWorkbook = new Workbook();
                originalWorkbook.LoadFromFile(inputFilePath);

                Console.WriteLine($"成功加载文件:{inputFilePath}");
                Console.WriteLine("开始拆分工作表...");

                // 2. 遍历所有工作表
                for (int i = 0; i < originalWorkbook.Worksheets.Count; i++)
                {
                    Worksheet currentSheet = originalWorkbook.Worksheets[i];
                    string sheetName = currentSheet.Name;

                    // 3. 为每个工作表创建新的Workbook对象
                    Workbook newWorkbook = new Workbook();
                    newWorkbook.Worksheets.Clear(); // 清除新工作簿中默认创建的空工作表

                    // 4. 将当前工作表复制到新的Workbook中
                    // 注意:这里使用 Clone() 方法复制工作表,确保数据和格式都被复制
                    newWorkbook.Worksheets.Add(sheetName); // 添加一个同名工作表
                    currentSheet.CopyTo(newWorkbook.Worksheets[0]); // 将原工作表内容复制到新工作簿的第一个工作表

                    // 5. 保存新的Workbook为独立文件
                    // 构造输出文件名:原文件名_工作表名.xlsx
                    string outputFileName = Path.GetFileNameWithoutExtension(inputFilePath) + "_" + sheetName + ".xlsx";
                    string outputFilePath = Path.Combine(outputDirectory, outputFileName);

                    newWorkbook.SaveToFile(outputFilePath, ExcelVersion.Version2016); // 可以根据需要选择Excel版本

                    Console.WriteLine($" - 工作表 '{sheetName}' 已保存为:'{outputFilePath}'");
                }

                Console.WriteLine("\n所有工作表已成功拆分为独立文件!");
            }
            catch (Exception ex)
            {
                // 6. 异常处理和提示信息
                Console.WriteLine($"发生错误:{ex.Message}");
                Console.WriteLine($"详细信息:{ex.StackTrace}");
            }

            Console.WriteLine("按任意键退出...");
            Console.ReadKey();
        }
    }
}

代码解释:

进阶技巧与注意事项

总结

本文深入探讨了在C#中将Excel工作表拆分为独立文件的常见需求和痛点,并提供了一个基于 Spire.XLS for .NET 的高效自动化解决方案。通过提供的详细代码示例,你可以轻松地将这一功能集成到你的项目中,告别繁琐的手动操作,显著提升工作效率。Spire.XLS for .NET凭借其强大的功能和易用性,无疑是.NET环境中处理Excel文件的理想选择。

到此这篇关于C#实现将Excel工作表拆分为独立文件的文章就介绍到这了,更多相关C#拆分Excel工作表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文