点击上方『早起Python』关注并星标
第一时间接收最新Python干货!
系列导读
Python办公自动化|从Word到Excel Python办公自动化|从Excel到Word Python办公自动化|批量合并PDF,拿来就用 Python办公自动化|批量处理文件,一学就会 Python办公自动化|对比文件,光速完成 大家好,又到了Python办公自动化专题。 今天我们讲解的案例是如何使用Python自动更新Excel表格,简单来说就是 每天都会对Excel中多个sheet进行更新,需要操作完后可以用程序完成第一张sheet 汇总表的更新 ,大概就是这样当然实现这一功能可以使用VBA或者Excel中的其他操作,但是查了相关操作略显复杂,现在我们使用Python来完成,主要涉及以下操作:
os、glob
模块处理文件
Pandas
处理多个表格
openpyxl
调整Excel样式
为了尽可能模拟读者的生产环境多了这一步。首先我们先用Python来创建一些随机数据,数据已经充分则可以跳到下一步骤。
我们需要把这个excel文件命名好放在桌面的data文件夹中
from openpyxl
接着是创建一些供随机的内容,可以随意写,我们还是皮卡丘化
'皮卡丘',
注意以上代码要单独运行先生成数据,再运行后续代码,OK现在数据就创建好了,然后正式进入我们的问题
由于后面多个表的更新后需要按日期顺序在汇总表里呈现,因此有一个策略是利用openpyxl
按顺序遍历各表然后写回汇总表。但注意,表格中存在边框、居中等样式修改
这种情况下,openpyxl
会识别样式,认为这些行是已经有数据的,故纯粹的sheet.append()
方法是无法将数据写入这些所谓的空行,而会从没有样式的行开始写入
所以需要在各表写入的时候不断计算所在行,并利用sheet.iter_rows()
定位。是不是有点麻烦?因此我们换个思路:利用pandas
,其方便的地方在于无视表格样式
f'{GetDesktopPath()}/data/results.xls*')[
将生成的表写回汇总表即可,涉及的内容稍微比较复杂。由于直接使用dataframe.to_excel
会覆盖原excel导致只有一张sheet,其他全部丢失,需要利用pd.ExcelWriter
,具体见代码。删除原来的汇总表并写入新的汇总表。因为新写入的sheet会置于末尾,可以用list.insert(0, list.pop())
将最后一个元素置于开头
'openpyxl')
这就完成了吗?没有。
pandas
的优势“无视样式”也成为了它的缺陷:写入文件时没有样式信息,因此最后再用openpyxl
对第一页的样式调整。
调整样式部分我们直接看代码,关键部分都给了详细注释
# 设置对齐、线性、边框、字体
到这里,我们就成功使用Python实现自动更新Excel表格,并且调整样式,可能看上去有点复杂,但核心就是使用Pandas
处理并使用openpyxl
调整样式,并且相比于在Excel中实现,一个更大的优势就是一旦代码写完以后可以在有相关需求的Excel中直接使用,从而解放了双手。拜拜,我们下个案例见~
注1:本文使用的数据与源码可在后台回复0523获取
注2:Python办公自动化系列旨在用Python解决工作中的繁琐操作,如果你有相关需求可在后台给我留言,我们会无偿为你解决并分享
本周依旧给常读常分享用户赠书,两本从零开始学Python数据分析包邮送
只要多看多分享就有机会获得,当然也可以点击下方小程序直接购买