Python实现两个Excel表格数据比对
代码如下:
# 从openpyxl导入PatternFill类
from openpyxl.styles import PatternFill
# 从openpyxl导入colors类
from openpyxl.styles import colors
# 从openpyxl导入Font类
from openpyxl.styles import Font
# 导入openpyxl模块并将其重命名为pxl
import openpyxl as pxl
# 下面使用openpyxl模块的load_workbook函数读取到Excel文件对象,并提取两个Excel文件中'Sheet1'工作表作为源数据。
workbook_1 = pxl.load_workbook(r'D:\python\数据对比\ar_reconciliation_collect.xlsx')
workbook_2 = pxl.load_workbook(r'D:\python\数据对比\ar_reconciliation_collect20230321.xlsx')
# 读取表1的sheet1内容
workbook_1_sheet_1 = workbook_1['ar_reconciliation_collect']
# 读取表2的sheet1内容
workbook_2_sheet_1 = workbook_2['ar_reconciliation_collect2023']
# 提取两个工作表中的最大行和最大列,这样即使两个表的行数和列数不一致也能完全找出不同的单元格数据。
# 确定最大行
if workbook_1_sheet_1.max_row > workbook_2_sheet_1.max_row:
max_row = workbook_1_sheet_1.max_row
else:
max_row = workbook_2_sheet_1.max_row
# 确定最大列
if workbook_1_sheet_1.max_column > workbook_2_sheet_1.max_column:
max_column = workbook_1_sheet_1.max_column
else:
max_column = 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函数进行保存即可。
# 将workbook_1对象保存到data3.xlsx文件中
workbook_1.save(r'D:\python\数据对比\data3.xlsx')
# 将workbook_2对象保存到data4.xlsx文件中。
workbook_2.save(r'D:\python\数据对比\data4.xlsx')