按照所属部门不同将excel文件拆分成多个文件

string excel_path = @"G:\zhyue\backup\2018-08-01 读取腾讯邮箱接口-获取一个月内未接收到外部邮件且已离职的邮箱\address_biz (4).csv";
string save_path = @"G:\zhyue\backup\2018-08-01 读取腾讯邮箱接口-获取一个月内未接收到外部邮件且已离职的邮箱\拆分excel\";//解决中文乱码
TxtLoadOptions lo = new TxtLoadOptions();
lo.Encoding = Encoding.Default;//打开excel文件
Workbook curr_wb = File.Exists(excel_path) ? new Workbook(excel_path, lo) : new Workbook();
//打开第一个sheet
Worksheet sheet_first = curr_wb.Worksheets[0];
Cells Cells = sheet_first.Cells;
//一共多少行数据
int rows = sheet_first.Cells.MaxDataRow + 1;//不同的部门名称集合
List<string> lst_departments = new List<string>();
//excel的数据集合
List<UserInfo> lst_excel = new List<UserInfo>();for (int i = 1; i < rows; i++)
{//从第二行开始lst_excel.Add(new UserInfo(){username = Cells[i, 0].StringValue,email = Cells[i, 1].StringValue,othername = Cells[i, 2].StringValue,department = Cells[i, 3].StringValue,contact = Cells[i, 4].StringValue,phone = Cells[i, 5].StringValue,sex = Cells[i, 6].StringValue,position = Cells[i, 7].StringValue,number = Cells[i, 8].StringValue,bindwechat = Cells[i, 9].StringValue,remark = Cells[i, 10].StringValue});
}//遍历不同的部门
lst_excel.Select(x => x.department).Distinct().ToList().ForEach(x =>
{Workbook wb1 = new Workbook();Worksheet sheet_first1 = wb1.Worksheets[0];Cells Cells1 = sheet_first1.Cells;//新生成的excel文件名string[] str_arr1 = x.Split('/');string department_new_name = str_arr1.Length > 1 ? x.Substring(x.IndexOf('/') + 1).Replace('/', '-') : x;Cells1[0, 0].PutValue("姓名");Cells1[0, 1].PutValue("电子邮件");Cells1[0, 2].PutValue("别名");Cells1[0, 3].PutValue("所属部门");Cells1[0, 4].PutValue("联系电话");Cells1[0, 5].PutValue("手机");Cells1[0, 6].PutValue("性别");Cells1[0, 7].PutValue("职务");Cells1[0, 8].PutValue("编号");Cells1[0, 9].PutValue("绑定微信");Cells1[0, 10].PutValue("备注");int i = 1;//当前行数 从第2行开始//查找excel中的这些部门并遍历lst_excel.Where(y => y.department == x).ToList().ForEach(y =>{Cells1[i, 0].PutValue(y.username);Cells1[i, 1].PutValue(y.email);Cells1[i, 2].PutValue(y.othername);Cells1[i, 3].PutValue(y.department);Cells1[i, 4].PutValue(y.contact);Cells1[i, 5].PutValue(y.phone);Cells1[i, 6].PutValue(y.sex);Cells1[i, 7].PutValue(y.position);Cells1[i, 8].PutValue(y.number);Cells1[i, 9].PutValue(y.bindwechat);Cells1[i, 10].PutValue(y.remark);i++;});wb1.Save(save_path + department_new_name + ".xlsx", SaveFormat.Xlsx);
});

结果:

每个excel里面都只有自己部门的数据

转载于:https://www.cnblogs.com/zhyue93/p/Csharp_excel.html

C# 按部门拆分excel文件相关推荐

  1. Python批量拆分Excel文件中已合并的单元格

    中国大学MOOC"Python程序设计基础"第4次开课 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大 ...

  2. python拆分excel文件

    当我们遇到一些很大的文件时,如果把所有的数据全部加入到内存当中处理,当文件比较小时还好,但是问价你很大时,这种方式是很不好的,当超过十几个G的文件时,我们该如何处理呢? python可以很好的处理这个 ...

  3. python处理数据——根据某列拆分excel文件

    需求 这里想要把一个大excel根据某列拆分为多个小的excel,再投递到队列中,以提高处理效率. 实现方法 这里的python代码非常简单: import pandas as pd import o ...

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

    C#将一个excel工作表根据指定范围拆分为多个excel文件 微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其 ...

  5. python拆分excel的sheet为单文件_WPS 2019 多个sheet表拆分成独立的excel文件

    参考: 场景:将多个sheet表拆分成独立的excel文件 一.安装VB工具: 默认情况下:wps -- 开发工具 --- VB 编辑器是灰选状态(即不可用状态),此时需要先安装vb工具:VBA Fo ...

  6. 使用Python进行Excel文件拆分

    使用python进行Excel表格拆分,保存为多个文件-运营必会小技能 公司内做数据支持岗位的伙伴(表哥.表姐.表叔.表妹),可能会经常遇到这样的需求,就是把一个Excel数据文件,按照某一列数据分类 ...

  7. python 拆分excel单元格_如何用Python拆分合并后的Excel单元格?

    我尝试只拆分Excel文件中的合并单元格(包含多个工作表),如下所示: 请注意有部分/全部空行.这些行不会合并.在 使用openpyxl,我在每个工作表中找到了合并的单元格区域,代码如下:wb2 = ...

  8. 多个 EXCEL 文件如何合并成一个文件

    同一文件夹里有多个格式相同的EXCEL文件,需要把它们合并到一个EXCEL文件中,应该怎么做呢? 自己编写程序来实现?尽管好些程序语言都提供了读取EXCEL文件的API,但还是需要写程序去打开每一个文 ...

  9. 如何去除 EXCEL 文件中的重复行

    在EXCEL数据文件中,如果按某几个列值比较,值都相等的几行称为重复行,那么怎么删除多余的重复行,只留下一行? 如果数据少,只有几十行数据,那么手工删除也是可以的.而如果数据量很大,手工处理就会是很麻 ...

最新文章

  1. linux日志生成速率统计,Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序...
  2. 【Hibernate步步为营】--关联映射之多对一
  3. 商业周刊评出08年增长最快的美国科技公司
  4. 趁年轻,去硅谷!2021 “神策未来星”春季校园招聘精英项目全面启动!你准备好了吗?
  5. Facebook Architecture @ QCon Next Month: Infrastructure, HTML5, NoSQL, OO Design
  6. 20181127-1 附加作业 软件工程原则的应用实例分析
  7. No module named ‘yaml‘错误解决办法
  8. “被”夭折的翻译——《CoffeeScript: Accelerated JavaScript Development》
  9. 手写分页sql_MyBatis-Plus 分页查询以及自定义sql分页的实现
  10. 新一代视频编码标准:HEVC、AVS2和AV1性能对比报告
  11. 传统项目管理和敏捷项目管理的区别是什么?
  12. mstar Android解锁,液晶电视维修之Mstar方案从强刷包提取引导的方法
  13. nodejs爬虫实战(一):抽屉新热榜
  14. [一起来做动图吧]Animate制作简单动图,包教包会,不会举报
  15. 【天怒人怨爸爸系列】一年级数学口算题生成程序
  16. JAVA中的运算规则
  17. 用代码关闭冰刃(IceSword)
  18. 个人认为程序员在工作中应该养成的一些良好习惯
  19. bugzilla 删除bug
  20. 深度学习:Q-learning收敛证明

热门文章

  1. linux case if for语法
  2. harbor镜像仓库-https访问的证书配置 (docker配置harbor https证书)
  3. CICD流程设计及openshift与k8s的命令对比
  4. golang跳转控制语句:goto语句示例
  5. go程序执行流程分析
  6. scala定长数组(接近Java数组)
  7. Python Django创建项目命令
  8. redis 配置允许其他主机可以远程连接redis
  9. Lambda-函数式接口(1)
  10. Centos7把一个文件复制到另外一台服务器上的scp命令