Python对excel操作——分类汇总278张Excel表中的数据
目录
一、题目
1、描述
2、展示
①原图
②效果图
二、分析
1、创建工作簿对象以及工作表对象
2、获取数据
3、数据存储
4、数据处理
三、源码
一、题目
1、描述
从278张表中获取物料编号、物料描述以及批号批数量三个数据,将物料号一样的产品的数量进行相加,得到此物料号总的数量,然后按降序排列存入一个新表中
2、展示
①原图
②效果图
二、分析
1、创建工作簿对象以及工作表对象
在练习了多个对excel的操作之后,总结出一个规律,就是不管是想怎么操作,最先要做的就是获取、创建工作簿对象以及获取、创建工作表对象;
因为不对原工作簿进行操作,所以要写入到了另一个工作簿中,写入到一个工作簿中时首先要先生成一个工作簿对象和工作表对象,才能进行写入,而写入的数据来源是源文件,所以要先获取到源文件工作簿对象和工作表对象;
wb = openpyxl.Workbook()#创建工作簿对象
ws = wb.active#创建工作表对象
ws.title = '汇总'#给工作表赋名字ws.append(['物料编号', '物料描述', '批号批数量'])#写入数据,此时传入的数据只能是列表或者元组all_wb = openpyxl.load_workbook('日领料单.xlsx')#获取工作簿对象
all_ws = all_wb.worksheets#获取工作表对象,因为一个工作簿中保存着很多工作表,所以此时的工作表对象存储着多个工作表对象的地址的元组
2、获取数据
获取的工作表对象存储的是多个工作表的地址,所以此时用遍历的in依次取出存储的对象表的地址;
工作表对象中存储的是表中每一行的对象地址,此时用同样的方法依次取到每个表中的每一行的地址;
然后再通过得到的每一行的对象去得到想要的列的对象,在通过获取对象值的方法去得到想要的值;
for w in all_ws:for row in range(4, w.max_row-3):
3、数据存储
因为不是简单的拿数据,而是要对数据做合并和排序的处理,所以拿出来的数据要进行存储;
因为每一次得到数据具有对应的关系,所以要用列表进行处理,将物料编号作为大字典的键,值为物料描述和批量数量构成的小字典,然后再将大字典添加到另一个字典中;
添加到字典中时,要进行去重以及批量数量的求和,因为字典的键是惟一的,而且可以通过字典的键去判断其是否已经存在,如果已经存在,则要进行的就是将批量数据的值进行求和,如果不存在则加入字典中;
for w in all_ws:for row in range(4, w.max_row-3):if w['K'+str(row)].value not in res.keys():res.update({w['K'+str(row)].value:{'物料描述':w['P'+str(row)].value,'批号批数量':int(w['N'+str(row)].value)}})else:res[w['K'+str(row)].value]['批号批数量'] += int(w['N'+str(row)].value)
li = list(res.items())
4、数据处理
在数据已经存储到字典中之后,还需要做的操作就是根据批量数量的值进行排序了,因为字典是无序的,所以要先将字典转为列表;先要将字典中的键和值通过方法给读出来,一个键值对保存在一个元组中,将元组转化为列表,然后对列表进行排序;
排序使用的是匿名函数lambda,因为存储时是大字典套中字典套小字典,而遍历的是大字典
,也就是将中字典中的键值对取出来存储到元组中,而中字典点中存储着小字典,所以元祖中存储的也有字典,而要进行排序的值为字典中的值,所以要通过字典的键去获取相对应数值
套的小字典也可以用列表代替,此时获取值是会简单一点
三、源码
import openpyxlwb = openpyxl.Workbook()
ws = wb.active
ws.title = '汇总'ws.append(['物料编号', '物料描述', '批号批数量'])# K4---物料编号(无重复) P4---物料描述(有重复)
# N4---批号批数量(累加) O4[-1]---产品型号(序号)# max_row-3---最大行
all_wb = openpyxl.load_workbook('日领料单.xlsx')
all_ws = all_wb.worksheets
res = {}
for w in all_ws:for row in range(4, w.max_row-3):if w['K'+str(row)].value not in res.keys():res.update({w['K'+str(row)].value:{'物料描述':w['P'+str(row)].value,'批号批数量':int(w['N'+str(row)].value)}})else:res[w['K'+str(row)].value]['批号批数量'] += int(w['N'+str(row)].value)
li = list(res.items())
print(li)
li.sort(key= lambda x:x[1]['批号批数量'], reverse=True)
for x in li:ws.append([x[0], x[1]['物料描述'], x[1]['批号批数量']])wb.save('demo.xlsx')
Python对excel操作——分类汇总278张Excel表中的数据相关推荐
- 使用sql语句将一张旧表中的数据取出并插入到另一张新表中(字段不对应),并将中文name转变为拼音存入到code中
要求:将公司旧项目中一个表的数据取出,全部放入到新项目的表中,两张表的字段是不对应的,数据有3446条,一条一条改,效率太低,所有这里采用的是sql语句进行操作 参考语法链接:SQL INSERT I ...
- Fintech系列(三) -- python对excel操作模块汇总||推荐指数||用法示例
python对excel操作模块汇总||推荐指数||用法示例 Working with Excel Files in Python 总览 读写Excel的python第三方开源模块 Excel写操作插 ...
- 什么是计算机嵌套分类汇总,excel嵌套分类汇总 Excel表格中创建嵌套分类汇总和查看嵌套分类汇总明细的方法...
excel嵌套分类汇总 Excel表格中创建嵌套分类汇总和查看嵌套分类汇总明细的方法,我们在工作中会遇到很多文章,像excel嵌套分类汇总这类问题应该大家也都遇到过吧,今天这篇excel嵌套分类汇总 ...
- Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet
Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet 发表时间:2020-04-26 问题:从当前目录或子目录中查询符合条件的excel表格,并从这 ...
- 人名和成绩一起排序_不同工作表中的数据表排序各异,如何用Excel数据透视表汇总?...
用数据透视表做分析的时候,有时源数据有好几张数据表,且分布在不同的地方.且因为维护源数据的人不同,数据表的行.列标题也未必固定不变. 那么问题来了,如果各个数据表的行标题排序各不相同,如何将它们合并到 ...
- 【Apache POI】Excel操作(一):Excel本地写入基本操作的实现
有人住高楼,有人在深沟,有人光万丈,有人一身锈:世人千万种,浮云莫去求,斯人若彩虹,遇上方知有. 有目录,不迷路 前言 前期准备 POI基本介绍 Excel简单介绍 Excel版本介绍 Excel基本 ...
- 【Apache POI】Excel操作(六):Excel计算公式的读取和使用
此后如竟没有炬火,我便是唯一的光. 文章目录 前言 Excel准备 计算公式读取 直接读取 屠龙秘技 再直接读取 再通过计算公式读取 完整代码 往期回顾 前言 在上期:[Apache POI]Exce ...
- 【Apache POI】Excel操作(八):Excel工具类的封装(终极版)
恋爱最珍贵的纪念品,从来就不是那些你送我的手表和项链,甚至也不是那些甜蜜的短信和合照.是你留在我身上的,如同河流留给山川的,那些你对我造成的改变. 有目录,不迷路 前言 代码开整 环境准备 正式开整 ...
- 【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中...
小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样.如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这 ...
最新文章
- [k8s] 第六章 Pod控制器详解(Controller-manager)
- python能够处理的最大整数是多少_python中能输出的最大整数位是多少
- Python 搜狗站长平台批量添加域名+批量提交链接 过验证码 IP限制
- 杭电1978java实现
- 解决:AttributeError: module 'pygal' has no attribute 'Worldmap' 问题
- dmsetup remove_all 这命令干啥的_分一个小知识,服务器上的一个解压与压缩文件的命令....
- 大数据学习笔记42:Hive - 分桶表
- Linux 零拷贝方案
- 用matlab抽样定理验证,用MATLAB验证时域抽样定理
- Spring之RMI 远程方法调用 (Remote Method Invocation)
- python中的作用域_python中作用域
- 裸看美剧必备英文词汇
- Houdini13:合成
- Invisible character on env file, cause programe abort abnormally
- excel工具栏隐藏了怎么办_?Excel菜单栏中工具栏突然不见了,怎么办?
- IDEA环境下模块的右下角蓝色小方块缺失的解决方法
- 170617 逆向-CrackMe之024
- 第三章 区块链进阶 [18]
- 2006年中国互联网天使投资大会文字实录
- 笔记:sentinel整合feign报org.springframework.beans.factory.UnsatisfiedDependencyException问题