有如下一个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
运行后结果如下,实现目标: