C#将一个excel工作表根据指定范围拆分为多个excel文件

微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其他方法如VBA及Visual Studio语言(如C#、VB.NET等)编程的方式。VBA我不是很熟悉,因此这篇文章写的是如何使用C# 将一个excel工作表根据指定的范围拆分为多个excel文件。

下面是一个excel人力资源信息表,里面含有三个部门及一些员工信息:

接下来就开始拆分这个excel工作表了,在这个示例中,我将这个表格拆分为三个单独的excel文件,每个excel文件是一个部门的信息。

详细步骤:

使用命名空间:

新建一个visual C#项目,添加引用并使用如下命名空间:

using Spire.Xls;

步骤1创建一个Workbook类的对象,加载源excel文件并获取文件中待拆分的工作表,在该示例中是第一个工作表。

Workbook bookOriginal = new Workbook();
bookOriginal.LoadFromFile("信息表.xlsx");
Worksheet sheet = bookOriginal.Worksheets[0];

步骤2创建一个新的Workbook对象newBook1,并给它添加一个空的工作表。

Workbook newBook1 = new Workbook();
newBook1.CreateEmptySheets(1);

步骤3获取newBook1的第一个工作表,然后获取源excel工作表中第二行至第八行(销售部)的数据,将它们复制到newBook1的第一个工作表。

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。

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代表的不是行号而是行数。

sheet.DeleteRow(2, 14);

步骤6保存这三个excel文件并以部门的名字命名。

newBook1.SaveToFile("销售部.xlsx", ExcelVersion.Version2007);
newBook2.SaveToFile("人力资源部.xlsx", ExcelVersion.Version2007);
bookOriginal.SaveToFile("研发部.xlsx", ExcelVersion.Version2007);

效果图:

全部代码:

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文档类似,我在之前的文章中已经写过了,如有需要可以参考。

感谢您的观看!

C#将一个excel工作表根据指定范围拆分为多个excel文件相关推荐

  1. excel冻结窗口_猴哥讲述:excel工作表的窗口进行拆分与冻结——固定与解冻窗口...

    excel如何冻结拆分窗口,一般我们在使用excel工作表的时候如果说excel间距比较大,数据比较多,我们可以把excel工作表的窗口进行拆分与冻结,下面我们就来学习一下在excel中对窗口拆分和冻 ...

  2. 在excel工作表中c1单元格_已知Excel工作表中A1单元格和B1单元格的值分别为“电子科技大学”、“信息中心”,要求在C1单元格显示“...

    已知Excel工作表中A1单元格和B1单元格的值分别为"电子科技大学"."信息中心",要求在C1单元格显示" 更多相关问题 所谓犯罪现象的特性,是指为 ...

  3. python 拆分excel工作表_使用python拆分excel单元格方法

    在使用python语言时,利用openpyxl库操作excel,可以用来拆分excel单元格.那么,如何拆分单元格呢? 工具/原料 python pycharm openpyxl 截图工具 WPS 笔 ...

  4. 使用 Python 第三方库 xlwt 写入数据到 Excel 工作表

    使用 Python 第三方库 xlwt 写入数据到 Excel 工作表 1. 安装 xlwt 库 2. 使用 xlwt 库 2.1 向 Excel 工作表写入单个数据 2.2 向 Excel 工作表写 ...

  5. 3分钟学会在C ++中以编程方式合并Excel工作表中的单元格

    合并和取消合并单元格是Microsoft Excel的一项简单且常用功能.合并单元格可能会在某些情况下很有用,例如,当工作表中有多个列共享相同的标题时,可以合并列上方的单元格以使其具有共同的标题.如果 ...

  6. c# excel工作表及cell读取

    昨天晚上做了一回雷锋,帮朋友写了个程序,把他2天都未整理好的Excel数据,一个小时搞定.大致如下:我朋友是搞质检的,每天都会产生一个excel文件,每个excel文件都有20来个工作表,他要做的事情 ...

  7. c# excel工作表及cell读取 .

    转发至:http://blog.csdn.net/chuangxin/article/details/6085577 昨天晚上做了一回雷锋,帮朋友写了个程序,把他2天都未整理好的Excel数据,一个小 ...

  8. excel表中怎么插入visio_如何插入或 Visio 中粘贴的 Excel 工作表-阿里云开发者社区...

    嵌入或链接 Excel 工作表通过对象命令在插入菜单上的绘图在 Visio loadTOCNode(2, 'summary'); 使用 插入 菜单上 对象 命令在 Visio 绘图中插入 Excel ...

  9. 打印Excel工作表时忽略打印区域

    当我们在Excel工作表中设置了打印区域后,Excel默认将只打印这些区域.如果此时要打印整个工作表,在Excel 2003中必需先取消打印区域,然后再进行打印.而在Excel 2007中,可以不必取 ...

最新文章

  1. 震惊了!关于JAVA复习的最佳敏捷实践!进BAT就是个毛毛雨!
  2. Paramiko,数据库
  3. vue.js安装问题
  4. IE6 浮动层背景不显示
  5. mina android 服务器,MINA框架----------android客户端与服务器端
  6. 互联网日报 | 6月7日 星期一 | 华为已捐献鸿蒙全部基础能力;芝麻信用7年免押金4000亿;奈雪的茶通过港交所上市聆讯...
  7. 下周见!Redmi K50标准版配置细节曝光:骁龙870+67W快充
  8. SQuAD2.0来了!新增5万人工撰写问题,且不一定有答案 | ACL最佳短论文
  9. Dijkstra及其堆优化
  10. 计算机ppt制作培训心得,计算机培训心得
  11. MT4API跟单、外汇API跟单接口详解
  12. 安卓4.0后新控件TextureView解决SurfaceView在修改默认屏幕方向后(硬件导致)视频方向无法翻转的问题
  13. 使用fail2ban解决暴力破解问题
  14. 洛谷P4704 太极剑(乱搞)
  15. 实数 有理数 无理数
  16. 学校机房计算机网络设计,建好高校机房 从设计上需掌握三大要素
  17. 常见ant命令及其用法
  18. QT使用openGL绘制一个三角形
  19. Linux Shell 批量运行语句
  20. Helmholtz方程差分计算

热门文章

  1. Docker系列三~docker安装nginx
  2. java多态子父类的构造器、成员变量、方法的调用关系
  3. mock方法常用框架_基于MOCK对象和JUNIT框架测试DAO
  4. SWT实现Text输入自动提示
  5. JVM 内存模型组成+经典总结
  6. LRU的两种实现方案
  7. 分布式幂等性如何保证
  8. 基于docker使用jenkins集成sonar
  9. Java高并发、分布式框架,从无到有微服务架构设计
  10. vtkSuperquadricSource:创建以原点为中心的多边形超二次曲面