python excel数据比对
一、背景与思路
背景:由于新冠肺炎疫情的影响,每天需要统计公司员工的信息进行上报,并和前一天的数据进行比对。肉眼一个个的比对比较累,而且容易出错,所以就想到通过程序来实现数据的比对。
思路:
1、通过xlrd、xlsxwriter这类模块进行表格读取,读取后,根据姓名或者手机号进行逐个单元格比对,发现值不对的,进行标记输出;
2、通过pandas进行数据列的合并和比对,如果发现值不一致的进行标记,最后输出为excel格式, 这里同样需要到索引列。
最终实现的效果如下:
二、使用方式
出于效果的考虑,这里选择了pandas进行数据进行处理,见上面的效果图,我们选择了手机号作为索引列,数据值相等的列,只会保留一个值,数据值不等的会通过高亮把两张表前后的值输出显示。注意这里大小写是敏感的,就像x86运维这个值之所以高亮显示就是因为两者的x值大小写不同。同时其中一个表存在的数据,另一个表中不存在也会在后面的sheet页进行单独列出。
打包成exe后,在windows下执行效果如下:
这里我特意截图了一个报错的内容出来,出现上面ValueError: Shape of passed values is (38, 25), indices imply (38, 23) 报错,是因为在23和25行使用了同样的手机号,注意,这里最开始已经说了要求,索引列要求唯不通是重复的,不然出现重复值时,数据列就不知道该和另一表格中的哪一行的数据进行合并了。有人说我的索引列就是有重复值怎么办?可以使用多列进行索引,比如两列进行索引,比如姓名+手机号,这样多列就可以确保唯一值。
另外比对的时候,还要注意标题行的值一定要一样的,不然程序也不知道两张表的哪些列应该比对。
如果需要该文中的程序的,可以进行出售,不要源码的打包程序(可适用windows、linux、mac平台)88元授权使用。捐赠所得会用于本站主机托管费用。需要源码的,可以通过本站联系方式进行洽谈。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/python-excel-diff/6367.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.