#!/usr/bin/env pythonimport openpyxl
from openpyxl.styles import PatternFill
from openpyxl.styles import colors
from openpyxl.styles import Font, Color
a='D:/測算單位設置/比對/吉林/tmp001.xlsx'
b='D:/測算單位設置/比對/吉林/國網吉林電力.xlsx'
c='D:/測算單位設置/比對/吉林/07ERP.xlsx'
d='D:/測算單位設置/比對/吉林/07國網吉林電力.xlsx'
#讀取excel文件
#括號中的字符串為你要比較的兩個excel的路徑,注意用“/”
wb_a = openpyxl.load_workbook(a)
wb_b = openpyxl.load_workbook(b)
#定義一個方法來獲取表格中某一列的內容,返回一個列表
#在這里,我的表格中:IP是具有唯一性的,所以我用它來區分數據的差異,而IP這一列在我的表格中是第“G”列
def getIP(wb):sheet = wb.activeip = []for cell in sheet['A']:ip.append(cell.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.active['A']
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.active['A']
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(c)
wb_b.save(d)
?