在管理工作中,会碰到把报表分割成不同的下属单位,或者把下属单位上报的报表分割成不同的业务种类。

示例:

待分割工作表 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文件相关推荐

  1. java拆分excel_Jexcel实现按一定规则分割excel文件的方法

    本文实例讲述了Jexcel实现按一定规则分割excel文件的方法.分享给大家供大家参考.具体如下: 现有一个excel文档,需要读取它并按照一定的规则,分割之,分割出来的每一段记录需要单独创建一个ex ...

  2. 超过一天的文件_一键合并多个excel文件至同一工作表!

    问题 小文是一个文艺青年,她从豆瓣上收集了很多种书籍的信息,并将书籍信息按照书籍分类创建了很多个excel文件,有一天,她突然想把这些不同分类的excel文件合并到一个工作表里,那么问题来了,如何快速 ...

  3. r读取文件夹下的所有csv文件_[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。...

    解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...

  4. 【.net core 通过NPOI库将Excel文件内容分类输出到不同的Excel中】

    前言 由于在文章[.net core 通过miniexcel库将Excel文件内容分类输出到不同的Excel中]中实现的Excel内容分类不能够保留原来的文件头格式,所以使用NPOI进行优化.NPOI ...

  5. excel排版大师测试记录:对两个约3000行、30列的excel文件分割为pdf文件

    excel排版大师 下载:http://pan.baidu.com/s/1eQnY0hW 测试使用的源文件为从网上下载的全国人口数据Excel文件: 一.整理.原文件格式比较规范,首先进行手工整理,使 ...

  6. Pthon实现本地excel文件,病例识别分类

    Pthon实现本地excel文件,病例识别分类 import pandas as pd import os import re import xlrd path = r'C:\Users\Admini ...

  7. R语言批量导入Excel文件并按表分类汇总

    需求:有n个Excel文件,每个文件包含表的数量不等,但全部表都有表名,并是根据同一的规范命名,比如与悟空有关的数据,存放在<悟空>表中,现在需要按表名对所有数据分类汇总 library( ...

  8. 对excel文件区间分类并统计作图

    import pandas as pd import os import interval import matplotlib.pyplot as plt import xlsxwriter #只能创 ...

  9. 数据导出到excel文件给客户端下载的几种方法

    (原创)datagrid数据导出到excel文件给客户端下载的几种方法 看到这个觉得这个人很厉害,mvp啊. 我就改成这个样子了.  Response.Clear();         Respons ...

最新文章

  1. 服务器显示器切换_尼某某 DDOS 攻击高德,致使服务器处于黑洞状态 5 个多小时:被判 16 个月...
  2. 安装nvm管理多版本nodejs
  3. 一段三次分拆的蚂蚁搬家式MySQL迁移经历
  4. 牛客练习赛79E-小G的数学难题【dp,单调队列】
  5. Java的String类是上帝的对象吗?
  6. vue给input file绑定函数获取当前上传的对象
  7. Nagios 配置及监控
  8. CV Code | 计算机视觉开源周报20190904期
  9. javascript版购物网站图片轮转
  10. android浮动按钮_Android浮动操作按钮示例教程
  11. android源码灭屏时蓝牙自动配对
  12. Linux iptables防火墙详解(一)——iptables基础知识
  13. 图像直方图及均衡方法总结(二)自适应直方图均衡AHE,CLAHE
  14. Java常用的排序查找算法
  15. Java-图书管理系统(控制台程序)
  16. 关于stdafx.h的错误
  17. Poi 、Jacob 统计word文档字数实现方式
  18. 局域网中两台电脑通信
  19. MW6MaxiCode ACX溢出
  20. 个人居间服务,劳务费用怎样合理节税?自然人代开3个点

热门文章

  1. selenium 遇到的奇葩问题
  2. Unity3D开发之遇上Dropdown
  3. 为什么大家都买卡地亚蒂芙尼_卡地亚、蒂芙尼卖那么贵!为什么我们的金店只能论克卖?...
  4. java之waite()和sleep()方法的区别
  5. ARIMA基本概念和流程讲解
  6. 桌面上什么都没有了怎么调出计算机,打开电脑桌面上什么都没有,黑屏
  7. python 大小端转换_Python 字节串转换以及大小端相关的几个方法
  8. 一键获取windows锁屏壁纸 Windows聚焦
  9. shmget物理内存_linux下共享内存mmap()方法和shmget()方法的疑问?
  10. 四十年后的手机长什么样