普通办公一族处理数据用的都是excel,excel也是office最伟大的发明之一。自己平时工作生活中也经常会用,所以准备写一些实用的小代码供大家参考。用Python来处理excel,很多人会觉得大材小用,其实不然。不管黑猫白猫,只要能抓老鼠都是好猫。
处理excel的模块有很多
xlwings
可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。
openpyxl
简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点,缺点是对 VBA 支持的不够好。
pandas
数据处理是 pandas 的立身之本,Excel 作为 pandas 输入/输出数据的容器。
win32com
从命名上就可以看出,这是一个处理 windows 应用的扩展,Excel 只是该库能实现的一小部分功能。该库还支持 office 的众多操作。需要注意的是,该库不单独存在,可通过安装 pypiwin32 或者 pywin32 获取。
xlsxwriter
拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。
DataNitro
作为插件内嵌到 Excel 中,可完全替代 VBA,在 Excel 中使用 python 脚本。既然被称为 Excel 中的 python,协同其他 python 库亦是小事一桩。然而,这是付费插件...
xlutils
基于 xlrd/xlwt,老牌 python 包,算是该领域的先驱,功能特点中规中矩,比较大的缺点是仅支持 xls 文件。
在上述模块中,pandas偏向于数据处理,并不支持VBA脚本操作,但对于今天想实现的功能,足够了。
需求:在一个文件夹里存在若干个excel表格,每一个表格由一个人提交数据。其中每个表格数据列顺序不一致,合并所有表格并且添加检查代码。
案例数据
导入模块
优化显示
文件路径
切换路径
新建df,list1
合并数据
遍历路径文件
计算文件个数
读取excel表格
累加到总的df
列表累加表格名
统计结果
运行结果
到了这一步已经合并完成,但是测试的时候只有3个人,一眼就看出了三个人都提交了数据,假如有300个人,我们无法用肉眼去识别和计算。所以咱们可以按照文件名称去核对每个人提交的数据是否有问题。
打印表格人数
清空王五数据
检查代码
去重姓名列
判定是否等于人数
挑选出不在list1中的人
打印结果
运行结果
否则输出文件
添加王五数据并运行
查看表格
代码分享链接:
https://pan.baidu.com/s/1K5SlOYwdVoKG6fhf_uUCuQ
密码:kji8
文件内容
以后我也会更新一些其他模块的用法,如果有什么需求或者奇思妙想,可以在文章底部留言,大家一起讨论进步。
领取专属 10元无门槛券
私享最新 技术干货