python 比对两个excel表数据_如何使用python比对两个excel表中的不同?

解决方法如下:

让我们用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的副本,

并在这个副本中用单元格填充色和字体颜色标注出两个表格中不同的数据差异。

希望对你有帮助哦 ~

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值