按照所属部门不同将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文件的更多相关文章

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

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

  2. excel多个sheet表拆分成独立的excel文件

    一.问题: 公司做一个项目,给的用户上报文是一个包含多个sheet页的excel文件, 但是在实际处理报文数据的时候需要拆分excel文件为多个独立的报文excel文件 二.解决: (1)一个一个的复 ...

  3. WPS 2019 多个sheet表拆分成独立的excel文件

    参考: https://www.cnblogs.com/hackxiyu/p/8945975.html 场景:将多个sheet表拆分成独立的excel文件 一.安装VB工具: 默认情况下:wps -- ...

  4. 银行业务-Excel文件的拆分逻辑

    一.问题: 随着银行业务数据量的急剧增加,原始的人力统计数据已经不能满足要求, 需要开发一款可以实现自动化数据统计的系统平台,进行数据的采集.加工.过滤.统计.预测 其中数据采集方式又以[Excel] ...

  5. Python 操作 MS Excel 文件

    利用 Python 对 Excel 文件进行操作需要使用第三方库: openpyxl,可执行 pip install openpyxl 进行安装 1. 导入 openpyxl 模块 导入 openpy ...

  6. C#操作Excel文件

    .Net平台上对Excel进行操作主要有两种方式.第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作:第二种,调用Excel的COM组件.两种方式各有特点. 注意一些简单的问题 ...

  7. Java Struts2 POI创建Excel文件并实现文件下载

    Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...

  8. 互联网上那些excel文件

    互联网上那些excel文件 文/玄魂 目录 互联网上那些excel文件 前言 1.1 查找包含指定值的excel文件 1.2 查找邮箱 1.3 查找身份证号 1.4  查找管理人员联系信息 1.5 获 ...

  9. 使用Aspose.Cells组件生成Excel文件

    生成带表头的Excel文件,格式如下显示. 当然更复杂的一些也可以通过 合并单元格的方法 public void Merge(int firstRow, int firstColumn, int to ...

随机推荐

  1. iOS 时区获取问题

    时区缩写 UTC, CST, GMT, CEST 以及转换 UTC是协调世界时(Universal Time Coordinated)英文缩写,是由国际无线电咨询委员会规定和推荐,并由国际时间局(BI ...

  2. ES6之新增set数据结构

    学习set set是ES6中的新增的数据结构,是一种构造函数,类似于数组,但是里面的元素都是唯一的,不重复的. 例如: const set = new Set(); [1,2,3,4,5,2,1,2, ...

  3. 解压命令tar zxvf中zxvf的意思

    x : 从 tar 包中把文件提取出来 z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压 v : 显示详细信息 f xxx.tar.gz : 指定被处理的文件是 ...

  4. CentOS7 安装 Visual Code

    官网下载 rpm 安装文件 运行 rpm -ivh 试一下 sudo rpm -ivh xxx.rpm 有可能弹出提出:libxx.so() need by xxxrpm ,反正意思是缺组件,去下载安 ...

  5. 洛谷P3830 [SHOI2012]随机树(期望dp)

    题面 luogu 题解 第一问: 设\(f[i]\)表示\(i\)步操作后,平均深度期望 \(f[i] = \frac {f[i - 1] * (i - 1)+f[i-1]+2}{i}=f[i-1]+ ...

  6. POJ_3470 Walls 【离散化+扫描线+线段树】

    一.题面 POJ3470 二.分析 POJ感觉是真的老了. 这题需要一些预备知识:扫描线,离散化,线段树.线段树是解题的关键,因为这里充分利用了线段树区间修改的高效性,再加上一个单点查询. 为什么需要 ...

  7. (转)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 ...

  8. 为apache提供sftp文件传输服务

    一.安装apache yum install httpd 二.为 /var/www/html 创建ftp账号www useradd -M -d /var/www/html www 三.更改ssh配置文 ...

  9. PHP之string之ltrim()函数使用

    ltrim (PHP 4, PHP 5, PHP 7) ltrim - Strip whitespace (or other characters) from the beginning of a s ...

  10. [PY3]——Python的函数

    Python函数总结图 1.调用 1.1 如何调用 1.1.1  函数名(传参) # 函数使用函数名来调用,函数名后紧跟一对小括号,小括号里传入函数定义时要求的参数 add(9,9) #9+9=18 ...