阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

37次阅读
没有评论

共计 2272 个字符,预计需要花费 6 分钟才能阅读完成。

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

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

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

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

pip install openpyxl

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

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

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

然后,将 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 的工作表数据。

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

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

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

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2272字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中