日常小记(1)openpyxl比对excel key值差异

工作中存在比对两个大批量Excel数据的需求,可通过代码实现该功能。此过程涉及信息技术领域,利用Python处理Excel数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作中遇到比对两个大批量excel的比对需求,代码实现如下:

#导入模块 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('C:/Users/Administrator/Desktop/工作簿1.xlsx')
wb_b = openpyxl.load_workbook('C:/Users/Administrator/Desktop/工作簿2.xlsx')
#定义一个方法来获取表格中某一列的内容,返回一个列表
#获取表格中的指定列的值来对比
def getrno(wb):
    sheet1 = wb.get_active_sheet()
    rno1 = []
    for cellobj in sheet1['A']:
        rno1.append(cellobj.value)

    return rno1
#获得对比字段列表
ip_a = getrno(wb_a)
ip_b = getrno(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()['A']
for cellobj in a:
    if cellobj.value in difference:
        # print (cellobj.value)
        cellobj.font = Font(color=colors.BLACK, italic=True ,bold = False)
        cellobj.fill = PatternFill("solid", fgColor="D60093")
print ("开始第二张表" + "----" *10)

b = wb_b.get_active_sheet()['A']
for cellobj in b:
    if cellobj.value in difference:
        # print (cellobj.value)
        cellobj.font = Font(color=colors.BLACK, italic=True ,bold = False)
        cellobj.fill = PatternFill("solid", fgColor="D60093")

wb_a.save('C:/Users/Administrator/Desktop/a.xlsx')
wb_b.save('C:/Users/Administrator/Desktop/b.xlsx')

2020/12/29 阿皮皮

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值