C# Excel文件合并实战:使用Spire.XLS快速整合数据

C# Excel文件合并实战:使用Spire.XLS快速整合数据

面对多Excel文件数据整合的繁琐操作,借助Spire.XLS for .NET,开发者可通过简洁的C#代码快速实现文件合并,显著提升数据处理效率。


1. 告别繁琐:为何选择C#与Spire.XLS进行Excel合并

在日常工作中,我们经常需要将分散在多个Excel文件中的数据汇总到一起进行分析。传统的手动操作不仅效率低下,而且随着文件数量和数据量的增加,出错的概率也成倍增长。此时,C# Combine Excel的需求变得尤为迫切。

为什么选择C#进行自动化处理?C#作为一种功能强大、面向对象的编程语言,拥有丰富的库生态系统,能够与各种数据源和文件格式无缝集成。而Spire.XLS,正是C#处理Excel文件领域的佼佼者。它是一个专业的Excel组件,具备以下显著优势:

  • 无需安装Microsoft Office: Spire.XLS是一个独立的库,不依赖于Office环境,部署更灵活。
  • 功能全面: 支持Excel的各种操作,包括创建、读取、编辑、保存、转换等,功能远超基础需求。
  • 高性能: 在处理大量数据和复杂文件时表现出色,确保合并效率。
  • 易用性: API设计直观,学习曲线平缓,开发者能够快速上手。

  • 2. 实战演练:使用Spire.XLS合并Excel文件

    接下来,我们将通过实际代码示例,演示如何使用Spire.XLS进行Excel文件合并。

    2.1 环境搭建与准备

    首先,你需要将Spire.XLS库添加到你的C#项目中。最简单的方式是通过NuGet包管理器:

  • 在Visual Studio中,右键点击你的项目 -> “管理NuGet程序包”。
  • 搜索“Spire.XLS”,然后点击“安装”。
  • 2.2 代码实现:多文件合并到单工作簿

    假设我们有多个Excel文件(例如file1.xlsx, file2.xlsx),每个文件包含一个工作表,我们希望将它们合并到一个新的Excel文件中的不同工作表里。

    using Spire.Xls;

    using System.IO;

    public class ExcelMerger

    {

        public static void MergeFilesToNewWorkbook(string[] inputFiles, string outputFilePath)

        {

            // 创建一个新的工作簿来存放合并后的数据

            Workbook newWorkbook = new Workbook();

            newWorkbook.Worksheets.Clear(); // 清空默认的工作表

            foreach (string filePath in inputFiles)

            {

                if (File.Exists(filePath))

                {

                    // 加载每个独立的Excel文件

                    Workbook sourceWorkbook = new Workbook();

                    sourceWorkbook.LoadFromFile(filePath);

                    // 获取源工作簿的第一个工作表

                    Worksheet sourceSheet = sourceWorkbook.Worksheets[0];

                    // 在新工作簿中添加一个工作表,并以源文件名命名

                    Worksheet newSheet = newWorkbook.Worksheets.Add(Path.GetFileNameWithoutExtension(filePath));

                    // 将源工作表的内容复制到新工作表

                    // 这里我们复制整个UsedRange,包括数据和格式

                    sourceSheet.AllocatedRange.Copy(newSheet.Range["A1"]);

                    // 释放资源

                    sourceWorkbook.Dispose();

                }

            }


            // 保存合并后的新Excel文件

            newWorkbook.SaveToFile(outputFilePath, ExcelVersion.Version2016);

            newWorkbook.Dispose();

            Console.WriteLine($"Excel文件已成功合并到:{outputFilePath}");

        }

    }

    关键API说明:

  • Workbook newWorkbook = new Workbook();:创建一个空的Excel工作簿。
  • sourceWorkbook.LoadFromFile(filePath);:加载指定的Excel文件。
  • newWorkbook.Worksheets.Add(sheetName);:在新工作簿中添加一个新的工作表。
  • sourceSheet.AllocatedRange.Copy(newSheet.Range["A1"]);:这是核心的复制操作。AllocatedRange获取工作表中实际使用过的区域,Copy方法将其内容(包括数据、格式、样式等)复制到目标工作表的指定位置(这里是A1单元格)。
  • 2.3 代码实现:多工作表数据追加合并

    另一种常见的合并场景是将多个Excel文件的数据内容追加到同一个工作表的末尾。这在汇总报表时非常有用。

    using Spire.Xls;

    using System.IO;

    public class ExcelDataAppender

    {

        public static void AppendDataToSingleSheet(string[] inputFiles, string outputFilePath)

        {

            Workbook mainWorkbook = new Workbook();

            mainWorkbook.Worksheets.Clear();

            Worksheet mainSheet = mainWorkbook.Worksheets.Add("CombinedData"); // 创建一个主工作表

            bool isFirstFile = true;

            foreach (string filePath in inputFiles)

            {

                if (File.Exists(filePath))

                {

                    Workbook sourceWorkbook = new Workbook();

                    sourceWorkbook.LoadFromFile(filePath);

                    Worksheet sourceSheet = sourceWorkbook.Worksheets[0];

                    // 获取源数据区域

                    CellRange sourceRange = sourceSheet.AllocatedRange;

                    if (sourceRange == null || sourceRange.Rows.Length == 0) continue; // 跳过空文件

                    // 获取主工作表当前的最后一行

                    int lastRow = mainSheet.LastRow;

                    // 如果是第一个文件,直接从A1开始复制,包括表头

                    if (isFirstFile)

                    {

                        sourceRange.Copy(mainSheet.Range["A1"]);

                        isFirstFile = false;

                    }

                    else // 后续文件,从已有数据的下一行开始复制,跳过源文件表头

                    {

                        // 假设第一行是表头

                        CellRange dataRange = sourceSheet.Range[sourceRange.Row + 1, sourceRange.Column,

                                                                sourceRange.LastRow, sourceRange.LastColumn];

                        dataRange.Copy(mainSheet.Range[lastRow + 1, 1]); // 复制到主工作表下一行

                    }

                    sourceWorkbook.Dispose();

                }

            }

            mainWorkbook.SaveToFile(outputFilePath, ExcelVersion.Version2016);

            mainWorkbook.Dispose();

            Console.WriteLine($"Excel数据已追加合并到:{outputFilePath}");

        }

    }

    关键API说明:

  • mainSheet.LastRow;:获取工作表中最后一行有数据的行号。
  • sourceSheet.Range[row, column, lastRow, lastColumn];:精确指定要复制的区域,这里用于跳过后续文件的表头。
  • dataRange.Copy(mainSheet.Range[lastRow + 1, 1]);:将数据复制到主工作表的下一行。
  • 通过上述示例,我们可以看到Spire.XLS在处理**Merge Excel Files C#**任务时的强大和灵活性。无论是将文件合并到不同工作表,还是将数据追加到同一工作表,Spire.XLS都能提供简洁高效的解决方案。


    结语

    在现代数据驱动的时代,掌握自动化数据处理技能至关重要。相信通过本文你已掌握了使用C#合并Excel文件的精髓。借助Spire.XLS库,只需几行代码就能轻松实现多文件整合,让繁琐的复制粘贴成为历史。希望这个方案能成为你的得力工具,助你在数据处理中游刃有余,专注更有价值的开发工作!

    最后编辑于
    ©著作权归作者所有,转载或内容合作请联系作者
    平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。