网站首页 > 基础教程 正文
在上一篇中,我采用了pandas的方法,我怕大家不好理解,我又做了个纯粹用openpyxl的
原始数据:
先对数据进行简单解析:
1、有三个不同工作簿的工作表;
2、用红色方框圈住的,代表着每个工作表不仅数据是无序的,而且存在重复;
3、用绿色方框圈住的,代表着三个表之间数据是没有直接规律的;
4、用蓝色方框圈住的,代表着三个表之间数据长度还是不一样的;
成果:
思路:
此次处理,先忽略每个表的“合计”列,分别对每个工作簿进行读取,对每一行的3、4、5月销量进行累加,然后利用python字典的特性实现去重(对于重复的产品,只累加销量,不重复罗列),最后输出结果至新表格。
代码分享:
为了使代码更有可阅读性,变量均使用中文,约等于中文编程了
1、导入库,如果未安装的,输入pip install openpyxl安装
from openpyxl import load_workbook, Workbook
2、创建空字典、汇总需要处理的工作簿
销量汇总 = {}
所有文件 = ["李晓燕1号店.xlsx", "林佳2号店.xlsx", "张丹3号店.xlsx"]
3、通过遍历所有文件,实现挨个读取工作簿,在获得工作表后,对大致数据区域内容进行读取
for 文件 in 所有文件:
工作簿 = load_workbook(文件)
工作表 = 工作簿[工作簿.sheetnames[0]]
for 行 in 工作表.iter_rows(2, 31, 1, 4):
if 行[0].value is not None:
临时变量1 = 销量汇总.get(行[0].value, None)
临时变量2 = 行[1].value + 行[2].value + 行[3].value
if 临时变量1 is None:
销量汇总[行[0].value] = [行[1].value, 行[2].value, 行[3].value, 临时变量2]
else:
销量汇总[行[0].value] = [临时变量1[0] + 行[1].value, 临时变量1[1] + 行[2].value,
临时变量1[2] + 行[3].value, 临时变量1[3] + 临时变量2]
工作簿.close()
工作表.iter_rows(2, 31, 1, 4):从第2行第1列开始,以行为单位读取,至第31行第4列结束
销量汇总.get(行[0].value, None):这就是所谓的利用字典特性,进行判断,如果字典里没这个水果产品,就返回None(空的意思),在if函数里进行判断,如果是空,添加一组数据,如果不是空,就进行累加
这是字典的格式
销量汇总[行[0].value] = [行[1].value, 行[2].value, 行[3].value, 临时变量2]:这级代表着将水果名为他的key,3、4、5月和累计销量以列表形式保存为他的value
工作簿.close():最外层每轮for循环,即代表着读取完一个工作簿,这个函数代表关闭工作簿的意思
4、输出保存
新建工作簿 = Workbook()
新建工作簿的工作表 = 新建工作簿.active
# 设置表头
新建工作簿的工作表.append(["水果名称", "3月销量", "4月销量", "5月销量", "总销量"])
# 写入数据
for 水果, 销量 in 销量汇总.items():
row_data = [水果] + 销量
新建工作簿的工作表.append(row_data)
新建工作簿.save("销量汇总.xlsx")
新建工作簿的工作表.append(["水果名称", "3月销量", "4月销量", "5月销量", "总销量"]):将会在工作表现有内容之后添加这几个内容,因为是新建的,所有从1行A列开始添加,这边作为表头使用
row_data = [水果] + 销量 \ 新建工作簿的工作表.append(row_data):将水果和销量合并成一个列表,继续往后添加
新建工作簿.save("销量汇总.xlsx"):保存工作簿至代码目录
代码是工具,思路才是核心。期待你用这些方法,解锁属于自己的高效办公方案!
欢迎骚扰,咱们下期见!
- 上一篇: 单例模式谁都会,破坏单例模式听说过吗?
- 下一篇: Python微信防撤回,基于itchat模块
猜你喜欢
- 2025-06-23 Python修饰器,终极解释来了!(python修改值)
- 2025-06-23 用Python写爬虫软件的思路(招聘网站为例)
- 2025-06-23 从菜鸟到专家:Python中的错误异常详解
- 2025-06-23 Python微信防撤回,基于itchat模块
- 2024-07-28 如何入门Python爬虫?爬虫原理及过程详解
- 2024-07-28 菜鸟用Python操作MongoDB,看这一篇就够了
- 2024-07-28 还在撸Python3.7,Python3.9新鲜出炉,菜鸟哥带你尝鲜解读
- 2024-07-28 字节大佬编写《菜鸟的python笔记》python初学者的福音,建议收藏
- 2024-07-28 10分钟学会用python写游戏!Python其实很简单!
- 2024-07-28 从零开始教你学爬虫!python爬虫的基本流程!
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)