有如下一個excel表,姓名列的內容相同,順序不同;月薪有部分內容不同。
目的:要找出哪幾條月薪不同。
通常的做法,要使用excel的高級篩選。
在此,使用xlwings實現,在不同的內容上涂色。
代碼如下:
# 右邊E列“月薪”不同的單元格標黃,同時對應D列“姓名”的單元格也標黃
import xlwings as xw# 打開工作簿和工作表
wb = xw.Book('找出不同的內容并涂色.xlsx') # 替換成你的文件名
ws = wb.sheets[0]# 讀取左側數據(A2:B9)
left_data = ws.range('A2:B9').value
left_dict = {name: salary for name, salary in left_data}# 讀取右側數據(D2:E9)
right_data = ws.range('D2:E9').value# 遍歷右側數據,比較并標色
for i, (name, right_salary) in enumerate(right_data, start=2):if name in left_dict:left_salary = left_dict[name]if left_salary != right_salary:# 標記右側“姓名”和“月薪”ws.range(f'D{i}').color = (255, 255, 0) # 黃色ws.range(f'E{i}').color = (255, 255, 0)else:# 清除原有顏色ws.range(f'D{i}').color = Nonews.range(f'E{i}').color = None
運行后結果如下,實現目標:
?
?