C# 按部门拆分excel文件

按照所属部门不同将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[];
Cells Cells = sheet_first.Cells;
//一共多少行数据
int rows = sheet_first.Cells.MaxDataRow + ; //不同的部门名称集合
List<string> lst_departments = new List<string>();
//excel的数据集合
List<UserInfo> lst_excel = new List<UserInfo>(); for (int i = ; i < rows; i++)
{//从第二行开始
lst_excel.Add(new UserInfo()
{
username = Cells[i, ].StringValue,
email = Cells[i, ].StringValue,
othername = Cells[i, ].StringValue,
department = Cells[i, ].StringValue,
contact = Cells[i, ].StringValue,
phone = Cells[i, ].StringValue,
sex = Cells[i, ].StringValue,
position = Cells[i, ].StringValue,
number = Cells[i, ].StringValue,
bindwechat = Cells[i, ].StringValue,
remark = Cells[i, ].StringValue
});
} //遍历不同的部门
lst_excel.Select(x => x.department).Distinct().ToList().ForEach(x =>
{
Workbook wb1 = new Workbook();
Worksheet sheet_first1 = wb1.Worksheets[];
Cells Cells1 = sheet_first1.Cells; //新生成的excel文件名
string[] str_arr1 = x.Split('/');
string department_new_name = str_arr1.Length > ? x.Substring(x.IndexOf('/') + ).Replace('/', '-') : x; Cells1[, ].PutValue("姓名");
Cells1[, ].PutValue("电子邮件");
Cells1[, ].PutValue("别名");
Cells1[, ].PutValue("所属部门");
Cells1[, ].PutValue("联系电话");
Cells1[, ].PutValue("手机");
Cells1[, ].PutValue("性别");
Cells1[, ].PutValue("职务");
Cells1[, ].PutValue("编号");
Cells1[, ].PutValue("绑定微信");
Cells1[, ].PutValue("备注");
int i = ;//当前行数 从第2行开始
//查找excel中的这些部门并遍历
lst_excel.Where(y => y.department == x).ToList().ForEach(y =>
{
Cells1[i, ].PutValue(y.username);
Cells1[i, ].PutValue(y.email);
Cells1[i, ].PutValue(y.othername);
Cells1[i, ].PutValue(y.department);
Cells1[i, ].PutValue(y.contact);
Cells1[i, ].PutValue(y.phone);
Cells1[i, ].PutValue(y.sex);
Cells1[i, ].PutValue(y.position);
Cells1[i, ].PutValue(y.number);
Cells1[i, ].PutValue(y.bindwechat);
Cells1[i, ].PutValue(y.remark); i++;
}); wb1.Save(save_path + department_new_name + ".xlsx", SaveFormat.Xlsx);
});
结果:

每个excel里面都只有自己部门的数据
C# 按部门拆分excel文件的更多相关文章
- C#将一个excel工作表根据指定范围拆分为多个excel文件
C#将一个excel工作表根据指定范围拆分为多个excel文件 微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其 ...
- excel多个sheet表拆分成独立的excel文件
一.问题: 公司做一个项目,给的用户上报文是一个包含多个sheet页的excel文件, 但是在实际处理报文数据的时候需要拆分excel文件为多个独立的报文excel文件 二.解决: (1)一个一个的复 ...
- WPS 2019 多个sheet表拆分成独立的excel文件
参考: https://www.cnblogs.com/hackxiyu/p/8945975.html 场景:将多个sheet表拆分成独立的excel文件 一.安装VB工具: 默认情况下:wps -- ...
- 银行业务-Excel文件的拆分逻辑
一.问题: 随着银行业务数据量的急剧增加,原始的人力统计数据已经不能满足要求, 需要开发一款可以实现自动化数据统计的系统平台,进行数据的采集.加工.过滤.统计.预测 其中数据采集方式又以[Excel] ...
- Python 操作 MS Excel 文件
利用 Python 对 Excel 文件进行操作需要使用第三方库: openpyxl,可执行 pip install openpyxl 进行安装 1. 导入 openpyxl 模块 导入 openpy ...
- C#操作Excel文件
.Net平台上对Excel进行操作主要有两种方式.第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作:第二种,调用Excel的COM组件.两种方式各有特点. 注意一些简单的问题 ...
- Java Struts2 POI创建Excel文件并实现文件下载
Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...
- 互联网上那些excel文件
互联网上那些excel文件 文/玄魂 目录 互联网上那些excel文件 前言 1.1 查找包含指定值的excel文件 1.2 查找邮箱 1.3 查找身份证号 1.4 查找管理人员联系信息 1.5 获 ...
- 使用Aspose.Cells组件生成Excel文件
生成带表头的Excel文件,格式如下显示. 当然更复杂的一些也可以通过 合并单元格的方法 public void Merge(int firstRow, int firstColumn, int to ...
随机推荐
- Python-Django编程问题汇总
OS:Windows10 64 IDE:JetBrain Python Community Edition 2017.3.4 Python:python-3.6.4 Django:V2.0.3 问题一 ...
- 数据结构基础 ---- 数组的理解和实现(Java)
什么是数组 数组是由类型相同的数据元素构成的有序集合,每个元素称为数组元素,每个元素受n(n>= 1)个线性关系的约束,每个元素在n个线性关系中的序号i1, i2, ....., in称该元素的 ...
- jQuery 获取元素当前位置offset()与position()
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- CentOS 7 安装方式汇总
U盘安装 通过U盘安装 CentOS 的过程和安装Windows非常相似,首先将 CentOS 镜像文件刻录到U盘(或者光盘),设置固件(BIOS或者UEFI)从U盘启动,然后逐步设置即可. 使用 V ...
- C#控制台画图形
static void Main(string[] args) { //九九乘法 Console.WriteLine("九九乘法口诀"); ; i <= ; i++) { ; ...
- java transient 和Volatile关键字
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...
- python并发学习总结
目录 一.理解操作系统 二.任务类型 三.Socket模块 四.一个简单的C/S程序 五.使用阻塞IO实现并发 方案一:阻塞IO+多进程 方案二:阻塞IO+多线程 阻塞IO模型的思考和总结 六.使用非 ...
- redis 数据库迁移
老大让把 一台机器上 redis 中所有的数据,迁移到另一台机器上 查了一下可以拷贝 rdb 文件, 此方法只适用于迁移到一个新的库, 迁移到正在使用的库就不行了, 而且 rdb 里面是所有的 db, ...
- SpringCloud - 2. 服务注册 和 发现
SpringCloud 的服务注册和发现是由Eureka来完成. 1.eureka server 1.1 依赖 <dependency> <groupId>org.spring ...
- linux目录(转载)
目录 1.树状目录结构图 2./目录 3./etc/目录 4./usr/目录 5./var/目录 6./proc/目录 7./dev/目录 该文章主要来自于网络进行整理. 目录结构参考地址: http ...