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 ...
随机推荐
- iOS 时区获取问题
时区缩写 UTC, CST, GMT, CEST 以及转换 UTC是协调世界时(Universal Time Coordinated)英文缩写,是由国际无线电咨询委员会规定和推荐,并由国际时间局(BI ...
- ES6之新增set数据结构
学习set set是ES6中的新增的数据结构,是一种构造函数,类似于数组,但是里面的元素都是唯一的,不重复的. 例如: const set = new Set(); [1,2,3,4,5,2,1,2, ...
- 解压命令tar zxvf中zxvf的意思
x : 从 tar 包中把文件提取出来 z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压 v : 显示详细信息 f xxx.tar.gz : 指定被处理的文件是 ...
- CentOS7 安装 Visual Code
官网下载 rpm 安装文件 运行 rpm -ivh 试一下 sudo rpm -ivh xxx.rpm 有可能弹出提出:libxx.so() need by xxxrpm ,反正意思是缺组件,去下载安 ...
- 洛谷P3830 [SHOI2012]随机树(期望dp)
题面 luogu 题解 第一问: 设\(f[i]\)表示\(i\)步操作后,平均深度期望 \(f[i] = \frac {f[i - 1] * (i - 1)+f[i-1]+2}{i}=f[i-1]+ ...
- POJ_3470 Walls 【离散化+扫描线+线段树】
一.题面 POJ3470 二.分析 POJ感觉是真的老了. 这题需要一些预备知识:扫描线,离散化,线段树.线段树是解题的关键,因为这里充分利用了线段树区间修改的高效性,再加上一个单点查询. 为什么需要 ...
- (转)mysql双机热备的实现
mysql双机热备的实现 原文:http://www.zjian.me/web/php/mysql%E5%8F%8C%E6%9C%BA%E7%83%AD%E5%A4%87%E7%9A%84%E5%AE ...
- 为apache提供sftp文件传输服务
一.安装apache yum install httpd 二.为 /var/www/html 创建ftp账号www useradd -M -d /var/www/html www 三.更改ssh配置文 ...
- PHP之string之ltrim()函数使用
ltrim (PHP 4, PHP 5, PHP 7) ltrim - Strip whitespace (or other characters) from the beginning of a s ...
- [PY3]——Python的函数
Python函数总结图 1.调用 1.1 如何调用 1.1.1 函数名(传参) # 函数使用函数名来调用,函数名后紧跟一对小括号,小括号里传入函数定义时要求的参数 add(9,9) #9+9=18 ...