最近剛接觸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 如何快速找出兩個電子表中數據的差異就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
