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

Crq
Crq
管理员
1715
文章
0
粉丝
Linux教程评论18字数 689阅读2分17秒阅读模式
摘要日常工作中需要对比两个Excel工作表中的数据差异是很不方便的,使用python来做就比较简单了!本文为大家介绍了python实现对比两个Excel的数据内容并标记出不同数据的示例...

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

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

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

pip install openpyxl

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

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

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

然后,将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数据内容并标出不同-图片3

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

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

weinxin
我的微信
微信号已复制
我的微信
这是我的微信扫一扫
 
Crq
  • 本文由 Crq 发表于2025年2月19日 12:25:46
  • 转载请注明:https://www.cncrq.com/13121.html
简单讲解观察者设计模式 Linux教程

简单讲解观察者设计模式

观察者模式是极其重要的一个设计模式,也是我几年开发过程中使用最多的设计模式,本文首先概述观察者模式的基本概念和Demo实现,接着是观察者模式在C++中的应用,最后是对观察者模式的应...
Git分支的前世今生 Linux教程

Git分支的前世今生

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证