最近剛接觸python,找點小任務來練練手,希望自己在練習中不斷的鍛鍊自己解決問題的能力。
公司裡會有這樣的場景:有一張電子表格的內容由兩三個部門或更多的部門用到,這些員工會在維護這些表格中不定期的跟新一些自己部門的數據,時間久了,大家的數據就開始打架了,非常不利於管理。要如何快速找到兩個或多個電子表格中資料的差異呢?
解決方法:
1.Excel自帶的方法(有興趣的自行百度)
2.pyth##th##pyth
##1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 #导入模块 openpyxl 5 import openpyxl 6 from openpyxl.styles import PatternFill 7 from openpyxl.styles import colors 8 from openpyxl.styles import Font, Color 9 10 #读取excel文件11 #括号中的字符串为你要比较的两个excel的路径,注意用“/”12 wb_a = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test.xlsx')13 wb_b = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test2.xlsx')14 #定义一个方法来获取表格中某一列的内容,返回一个列表15 #在这里,我的表格中:IP是具有唯一性的,所以我用它来区分数据的差异,而IP这一列在我的表格中是第“G”列16 def getIP(wb):17 sheet = wb.get_active_sheet()18 ip = []19 for cellobj in sheet['G']:20 ip.append(cellobj.value)21 22 return ip23 #获得ip列表24 ip_a = getIP(wb_a)25 ip_b = getIP(wb_b)26 #将两个列表转换成集合27 aa = set(ip_a)28 bb = set(ip_b)29 #找出两个列表的不同行,并转换成列表30 difference = list(aa ^ bb)31 #打印出列表中的元素32 #到这一步,两个表格中不同的数据已经被找出来了33 for i in difference:34 print (i)35 36 #将不同行高亮显示37 print ("开始第一张表" + "----" *10)38 a = wb_a.get_active_sheet()['G']39 for cellobj in a:40 if cellobj.value in difference:41 print (cellobj.value)42 cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)43 cellobj.fill = PatternFill("solid", fgColor="DDDDDD")44 print ("开始第二张表" + "----" *10)45 b = wb_b.get_active_sheet()['G']46 for cellobj in b:47 if cellobj.value in difference:48 print (cellobj.value)49 cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)50 cellobj.fill = PatternFill("solid", fgColor="DDDDDD")51 52 wb_a.save('d:/BAKFILE/d046532/Desktop/a.xlsx')53 wb_b.save('d:/BAKFILE/d046532/Desktop/b.xlsx')
這樣,就會保存兩個excel的副本,並在這個副本中用單元格填充色和字體顏色標註出兩個表格中不同的數據差異
#
以上是快速找出兩個電子表中資料的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!