Python实现对比两个Excel数据内容并标出不同

日常工作中需要对比两个Excel工作表中的数据差异是很不方便的,使用python来做就比较简单了!本文为大家介绍了python实现对比两个Excel的数据内容并标记出不同数据的示例代码,需要的可以参考一下

日常工作中需要对比两个Excel工作表中的数据差异是很不方便的,使用python来做就比较简单了!

我们的思路是通过读取两个Excel的数据,采用逐个遍历对比同一个位置的两个单元格如果不是相同的则打上对应的标记,处理完成后再另存为Excel文件。

既然是对每个单元格的操作那肯定离不开openpyxl模块,没有的话使用pip的方式安装一下即可。

pip install openpyxl

接着我们准备读取两个需要对比的Excel数据内容,这里准备的是data1.xlsx和data2.xlsx作为源数据使用。

然后,将openpyxl模块及其所需要的样式填充/文字设置相关的对象导入。

# It imports the PatternFill class from the openpyxl.styles module.
from openpyxl.styles import PatternFill
 
# It imports the colors class from the openpyxl.styles module.
from openpyxl.styles import colors
 
# It imports the Font class from the openpyxl.styles module.
from openpyxl.styles import Font
 
# It imports the openpyxl module and renames it as pxl.
import openpyxl as pxl

下面使用openpyxl模块的load_workbook函数读取到Excel文件对象,并提取两个Excel文件中'Sheet1'工作表作为源数据。

# It loads the data1.xlsx file and assigns it to the workbook_1 variable.
workbook_1 = pxl.load_workbook(r'data1.xlsx')
 
# It loads the data2.xlsx file and assigns it to the workbook_2 variable.
workbook_2 = pxl.load_workbook(r'data2.xlsx')
 
# Assigning the Sheet1 object to the workbook_1_sheet_1 variable.
workbook_1_sheet_1 = workbook_1['Sheet1']
 
# It assigns the Sheet1 object to the workbook_2_sheet_1 variable.
workbook_2_sheet_1 = workbook_2['Sheet1']

提取两个工作表中的最大行和最大列,这样即使两个表的行数和列数不一致也能完全找出不同的单元格数据。

# A ternary operator. It is equivalent to:
max_row = workbook_1_sheet_1.max_row if workbook_1_sheet_1.max_row > workbook_2_sheet_1.max_row else workbook_2_sheet_1.max_row
 
# A ternary operator. It is equivalent to:
max_column = workbook_1_sheet_1.max_column if workbook_1_sheet_1.max_column > workbook_2_sheet_1.max_column else workbook_2_sheet_1.max_column

使用for循环的方式分别遍历行数据和列数据,然后判断对应单元格的数据值是否相等,若是不相等则打上标记。

for i in range(1, (max_row + 1)):
    for j in range(1, (max_column + 1)):
        cell_1 = workbook_1_sheet_1.cell(i, j)
        cell_2 = workbook_2_sheet_1.cell(i, j)
        if cell_1.value != cell_2.value:
            cell_1.fill = PatternFill("solid", fgColor='FFFF00')
            cell_1.font = Font(color=colors.BLACK, bold=True)
            cell_2.fill = PatternFill("solid", fgColor='FFFF00')
            cell_2.font = Font(color=colors.BLACK, bold=True)

最后将对比处理完成后的工作表对象使用save函数进行保存即可。

# It saves the workbook_1 object to the data3.xlsx file.
workbook_1.save('data3.xlsx')
 
# It saves the workbook_2 object to the data4.xlsx file.
workbook_2.save('data4.xlsx')

下面是通过对比差异化处理后的data3.xlsx和data4.xlsx的工作表数据。

从结果来看,即使是两个表的数据行数不一致也能对比出差异数据并打上了标记。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值