按分类分割EXCEL文件
在管理工作中,会碰到把报表分割成不同的下属单位,或者把下属单位上报的报表分割成不同的业务种类。
示例:
待分割工作表 SALES.XLSX
产品号 | 销量 | 客户 | 说明 |
A2312 | 100 | V01 | |
A2311 | 120 | V02 | |
A2311 | 200 | V03 | TEST |
A2313 | 50 | V04 | |
A2315 | 80 | V05 | |
A2318 | 130 | V06 | |
A2311 | 120 | V07 | |
A2314 | 200 | V08 | OK |
A2313 | 50 | V09 | |
A2312 | 80 | V10 |
产品号 | 销量 | 客户 | 说明 |
A2312 | 100 | C01 | |
A2311 | 120 | C02 | |
A2311 | 200 | C03 | TEST |
A2313 | 50 | C04 | |
A2315 | 80 | C05 |
分割依据: CATE.XLSX
CATE | PRD_ID |
洗涤用品 | A2311 |
食品 | A2312 |
食品 | A2313 |
食品 | A2314 |
食品 | A2315 |
洗涤用品 | A2318 |
# coding=UTF-8
"""
标题:Excel文件分割
功能:检索excel 文件,按标识列,保存到N个文件中。
开发人员:seakingx
建立时间:2018.11.02
最后修改:2018.11.05
python 2.7
"""
def split_test():xls_file = r"CATE.xlsx"data = pd.read_excel(xls_file, 0)rows = data.shape[0] # 获取行数 shape[1]获取列数department_dict = {}department_list = []for i in range(rows):temp = data['CATE'][i]key = data['PRD_ID'][i]if temp not in department_list:department_list.append(temp) # 将分类存在一个列表中department_dict[temp] = [key] # 建立分类字典else:# 分类字典添加数据key_list = department_dict[temp]key_list.append(key)department_dict[temp] = key_listprint len(department_list), rows, len(department_dict)# for di in department_dict:# print di, department_dict[di]ret_data = {'list': department_list, 'dict': department_dict}split_work = {"xls_file": r"DATA\sales.xlsx", "xls_fld": u"产品号", "file_head": u"产品_", "dir": "DATA"}split_work['dict_list'] = ret_data['dict']split_work['file_list'] = ret_data['list']xls_file = split_work['xls_file']fld_key = split_work['xls_fld']# 工作表数量xl = pd.ExcelFile(xls_file)xls_sheet_len = len(xl.sheet_names)# 获取市县列表、机构代码名称对应表、市县机构字典department_list = split_work['file_list']department_dict = split_work['dict_list']# 按分类遍历数据、写入数据work_info = []for department in department_list:print departmentfile_name = u"{0}\{1}{2}.xlsx".format(split_work['dir'], split_work['file_head'], department)work_item = [department, file_name]xls_save_file = pd.ExcelWriter(file_name)# 遍历工作表for sheet_i in range(xls_sheet_len):data = pd.read_excel(xls_file, sheet_i)rows = data.shape[0] # 获取行数 shape[1]获取列数new_df = pd.DataFrame()# 遍历行,筛选数据for i in range(0, rows):if data[fld_key][i] in department_dict[department]:new_df = pd.concat([new_df, data.iloc[[i], :]], axis=0, ignore_index=True)# 写入工作表work_item.append(len(new_df))new_df.to_excel(xls_save_file, sheet_name=xl.sheet_names[sheet_i], index=False)# 保存文件xls_save_file.save()work_info.append(work_item)for w in work_item:print w,print "完成"work_df = pd.DataFrame(work_info, columns=[u'分类', u'文件名'] + xl.sheet_names, dtype=float)rpt_file_name = split_work['file_head'] + u"_统计.xlsx"work_df.to_excel(rpt_file_name, sheet_name=u'统计', index=False)
完成结果示范:
统计表
分类 | 文件名 | 分店1 | 分店2 |
洗涤用品 | DATA\产品_洗涤用品.xlsx | 4 | 2 |
食品 | DATA\产品_食品.xlsx | 6 | 3 |
分割后的文件:
按分类分割EXCEL文件相关推荐
- java拆分excel_Jexcel实现按一定规则分割excel文件的方法
本文实例讲述了Jexcel实现按一定规则分割excel文件的方法.分享给大家供大家参考.具体如下: 现有一个excel文档,需要读取它并按照一定的规则,分割之,分割出来的每一段记录需要单独创建一个ex ...
- 超过一天的文件_一键合并多个excel文件至同一工作表!
问题 小文是一个文艺青年,她从豆瓣上收集了很多种书籍的信息,并将书籍信息按照书籍分类创建了很多个excel文件,有一天,她突然想把这些不同分类的excel文件合并到一个工作表里,那么问题来了,如何快速 ...
- r读取文件夹下的所有csv文件_[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。...
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
- 【.net core 通过NPOI库将Excel文件内容分类输出到不同的Excel中】
前言 由于在文章[.net core 通过miniexcel库将Excel文件内容分类输出到不同的Excel中]中实现的Excel内容分类不能够保留原来的文件头格式,所以使用NPOI进行优化.NPOI ...
- excel排版大师测试记录:对两个约3000行、30列的excel文件分割为pdf文件
excel排版大师 下载:http://pan.baidu.com/s/1eQnY0hW 测试使用的源文件为从网上下载的全国人口数据Excel文件: 一.整理.原文件格式比较规范,首先进行手工整理,使 ...
- Pthon实现本地excel文件,病例识别分类
Pthon实现本地excel文件,病例识别分类 import pandas as pd import os import re import xlrd path = r'C:\Users\Admini ...
- R语言批量导入Excel文件并按表分类汇总
需求:有n个Excel文件,每个文件包含表的数量不等,但全部表都有表名,并是根据同一的规范命名,比如与悟空有关的数据,存放在<悟空>表中,现在需要按表名对所有数据分类汇总 library( ...
- 对excel文件区间分类并统计作图
import pandas as pd import os import interval import matplotlib.pyplot as plt import xlsxwriter #只能创 ...
- 数据导出到excel文件给客户端下载的几种方法
(原创)datagrid数据导出到excel文件给客户端下载的几种方法 看到这个觉得这个人很厉害,mvp啊. 我就改成这个样子了. Response.Clear(); Respons ...
最新文章
- 服务器显示器切换_尼某某 DDOS 攻击高德,致使服务器处于黑洞状态 5 个多小时:被判 16 个月...
- 安装nvm管理多版本nodejs
- 一段三次分拆的蚂蚁搬家式MySQL迁移经历
- 牛客练习赛79E-小G的数学难题【dp,单调队列】
- Java的String类是上帝的对象吗?
- vue给input file绑定函数获取当前上传的对象
- Nagios 配置及监控
- CV Code | 计算机视觉开源周报20190904期
- javascript版购物网站图片轮转
- android浮动按钮_Android浮动操作按钮示例教程
- android源码灭屏时蓝牙自动配对
- Linux iptables防火墙详解(一)——iptables基础知识
- 图像直方图及均衡方法总结(二)自适应直方图均衡AHE,CLAHE
- Java常用的排序查找算法
- Java-图书管理系统(控制台程序)
- 关于stdafx.h的错误
- Poi 、Jacob 统计word文档字数实现方式
- 局域网中两台电脑通信
- MW6MaxiCode ACX溢出
- 个人居间服务,劳务费用怎样合理节税?自然人代开3个点
热门文章
- selenium 遇到的奇葩问题
- Unity3D开发之遇上Dropdown
- 为什么大家都买卡地亚蒂芙尼_卡地亚、蒂芙尼卖那么贵!为什么我们的金店只能论克卖?...
- java之waite()和sleep()方法的区别
- ARIMA基本概念和流程讲解
- 桌面上什么都没有了怎么调出计算机,打开电脑桌面上什么都没有,黑屏
- python 大小端转换_Python 字节串转换以及大小端相关的几个方法
- 一键获取windows锁屏壁纸 Windows聚焦
- shmget物理内存_linux下共享内存mmap()方法和shmget()方法的疑问?
- 四十年后的手机长什么样