C#将一个excel工作表根据指定范围拆分为多个excel文件
C#将一个excel工作表根据指定范围拆分为多个excel文件
微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其他方法如VBA及Visual Studio语言(如C#、VB.NET等)编程的方式。VBA我不是很熟悉,因此这篇文章写的是如何使用C# 将一个excel工作表根据指定的范围拆分为多个excel文件。
下面是一个excel人力资源信息表,里面含有三个部门及一些员工信息:
接下来就开始拆分这个excel工作表了,在这个示例中,我将这个表格拆分为三个单独的excel文件,每个excel文件是一个部门的信息。
详细步骤:
使用命名空间:
新建一个visual C#项目,添加引用并使用如下命名空间:
1 | using Spire.Xls; |
步骤1:创建一个Workbook类的对象,加载源excel文件并获取文件中待拆分的工作表,在该示例中是第一个工作表。
1 2 3 | Workbook bookOriginal = new Workbook(); bookOriginal.LoadFromFile( "信息表.xlsx" ); Worksheet sheet = bookOriginal.Worksheets[0]; |
步骤2:创建一个新的Workbook对象newBook1,并给它添加一个空的工作表。
1 2 | Workbook newBook1 = new Workbook(); newBook1.CreateEmptySheets(1); |
步骤3:获取newBook1的第一个工作表,然后获取源excel工作表中第二行至第八行(销售部)的数据,将它们复制到newBook1的第一个工作表。
1 2 3 | Worksheet newSheet1 = newBook1.Worksheets[0]; CellRange range1 = sheet.Range[2, 1, 8, sheet.LastColumn]; newSheet1.Copy(range1, newSheet1.Range[1, 1]); |
步骤4:重复步骤2和步骤3,创建一个新的Workbook对象newbook2,获取源excel工作表中的第九行至第十五行(人力资源部)的数据并将它们复制到newbook2。
1 2 3 4 5 | Workbook newBook2 = new Workbook(); newBook2.CreateEmptySheets(1); Worksheet newSheet2 = newBook2.Worksheets[0]; CellRange range2 = sheet.Range[9, 1, 15, sheet.LastColumn]; newSheet2.Copy(range2, newSheet2.Range[1, 1]); |
步骤5:删除源excel文件中第二行到第十五行的数据,剩下行(研发部)的数据将被保存为另一个新的excel文件。注意这里的14代表的不是行号而是行数。
1 | sheet.DeleteRow(2, 14); |
步骤6:保存这三个excel文件并以部门的名字命名。
1 2 3 | newBook1.SaveToFile( "销售部.xlsx" , ExcelVersion.Version2007); newBook2.SaveToFile( "人力资源部.xlsx" , ExcelVersion.Version2007); bookOriginal.SaveToFile( "研发部.xlsx" , ExcelVersion.Version2007); |
效果图:
全部代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using Spire.Xls; namespace splitworksheet { class Program { static void Main( string [] args) { Workbook bookOriginal = new Workbook(); bookOriginal.LoadFromFile( "信息表.xlsx" ); Worksheet sheet = bookOriginal.Worksheets[0]; Workbook newBook1 = new Workbook(); newBook1.CreateEmptySheets(1); Worksheet newSheet1 = newBook1.Worksheets[0]; CellRange range1 = sheet.Range[2, 1, 8, sheet.LastColumn]; newSheet1.Copy(range1, newSheet1.Range[1, 1]); Workbook newBook2 = new Workbook(); newBook2.CreateEmptySheets(1); Worksheet newSheet2 = newBook2.Worksheets[0]; CellRange range2 = sheet.Range[9, 1, 15, sheet.LastColumn]; newSheet2.Copy(range2, newSheet2.Range[1, 1]); sheet.DeleteRow(2, 14); newBook1.SaveToFile( "销售部.xlsx" , ExcelVersion.Version2007); newBook2.SaveToFile( "人力资源部.xlsx" , ExcelVersion.Version2007); bookOriginal.SaveToFile( "研发部.xlsx" , ExcelVersion.Version2007); } } } |
总结:
在上面的示例中我使用的是Free Spire.XLS,拆分excel文件是根据指定部门所在的行的范围,除此之外也可以根据部门的名字来拆分,与检索数据并导出到新的excel文档类似,我在之前的文章中已经写过了,如有需要可以参考。
感谢您的观看!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)