幽灵资源网 Design By www.bzswh.com
最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力。
公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的跟新一些自己部门的数据,时间久了,大家的数据就开始打架了,非常不利于管理。怎样快速找到两个或者多个电子表格中数据的差异呢?
解决办法:
1. Excel自带的方法(有兴趣的自行百度)
2. python 写一个小脚本
#!/usr/bin/env python # -*- coding: utf-8 -*- #导入模块 openpyxl import openpyxl from openpyxl.styles import PatternFill from openpyxl.styles import colors from openpyxl.styles import Font, Color #读取excel文件 #括号中的字符串为你要比较的两个excel的路径,注意用“/” wb_a = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test.xlsx') wb_b = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test2.xlsx') #定义一个方法来获取表格中某一列的内容,返回一个列表 #在这里,我的表格中:IP是具有唯一性的,所以我用它来区分数据的差异,而IP这一列在我的表格中是第“G”列 def getIP(wb): sheet = wb.get_active_sheet() ip = [] for cellobj in sheet['G']: ip.append(cellobj.value) return ip #获得ip列表 ip_a = getIP(wb_a) ip_b = getIP(wb_b) #将两个列表转换成集合 aa = set(ip_a) bb = set(ip_b) #找出两个列表的不同行,并转换成列表 difference = list(aa ^ bb) #打印出列表中的元素 #到这一步,两个表格中不同的数据已经被找出来了 for i in difference: print (i) #将不同行高亮显示 print ("开始第一张表" + "----" *10) a = wb_a.get_active_sheet()['G'] for cellobj in a: if cellobj.value in difference: print (cellobj.value) cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True) cellobj.fill = PatternFill("solid", fgColor="DDDDDD") print ("开始第二张表" + "----" *10) b = wb_b.get_active_sheet()['G'] for cellobj in b: if cellobj.value in difference: print (cellobj.value) cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True) cellobj.fill = PatternFill("solid", fgColor="DDDDDD") wb_a.save('d:/BAKFILE/d046532/Desktop/a.xlsx') wb_b.save('d:/BAKFILE/d046532/Desktop/b.xlsx')
这样,就会保存两个excel的副本,并在这个副本中用单元格填充色和字体颜色标注出两个表格中不同的数据差异
未解决:
1. 怎样将这些有差异的数据补充到一张表里,形成一个全集表
2. 怎么优化精简代码
以上这篇python 如何快速找出两个电子表中数据的差异就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
标签:
python,电子表中数据的差异
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。