此代码是将两个相同结构的EXCEL表格内容差异的比较,并作标记 内容差异: 1)填充色比较差异 2)单元格值比较,不包括格式信息,如字体、颜色、大小等 3)字体的名称、大小、是否加粗、是否斜体、是否有下划线以及颜色是否相同
from openpyxl.styles import PatternFill, Font
from openpyxl.styles.colors import BLUE
import openpyxl as vb
from datetime import datetime
# 此代码是将两个相同结构的EXCEL表格内容差异的比较,并作标记
# 内容差异: 1)填充色比较差异
# 2)单元格值比较不包括格式信息,如字体、颜色、大小等
# 3)字体的名称、大小、是否加粗、是否斜体、是否有下划线以及颜色是否相同
# 定义比较填充色的函数
def compare_fills(fill1, fill2):
if fill1.fill_type != fill2.fill_type:
return False
if fill1.fill_type == "solid":
return fill1.fgColor == fill2.fgColor
# 可以添加其他填充类型的比较,例如渐变填充等
return True
# 定义比较字体的函数
def compare_fonts(font1, font2):
return (font1.name == font2.name and
font1.size == font2.size and
font1.bold == font2.bold and
font1.italic == font2.italic and
font1.underline == font2.underline and
font1.color == font2.color)
workbook_a = vb.load_workbook(r'表1.3.xlsx')
workbook_b = vb.load_workbook(r'表1.4.xlsx')
sheet_a = workbook_a['Sheet1']
sheet_b = workbook_b['Sheet1']
maxrow = sheet_a.max_row
maxcolumn = sheet_b.max_column
for i in range(1, maxrow + 1):
for j in range(1, maxcolumn + 1):
cell_a = sheet_a.cell(i, j)
cell_b = sheet_b.cell(i, j)
# 比较单元格的值
if cell_a.value != cell_b.value:
cell_a.fill = PatternFill("solid", fgColor="FF0000") # 浅紫色填充
cell_a.font = Font(color=BLUE, bold=True) # 蓝色字体加粗
# 比较单元格的填充色
if not compare_fills(cell_a.fill, cell_b.fill):
cell_a.fill = PatternFill("solid", fgColor="FF0000") # 浅紫色填充
cell_a.font = Font(color=BLUE, bold=True) # 蓝色字体加粗
# 比较单元格的字体
if not compare_fonts(cell_a.font, cell_b.font):
cell_a.font = Font(color=BLUE, bold=True) # 蓝色字体加粗
cell_a.fill = PatternFill("solid", fgColor="FFBBFF") # 浅紫色填充
current_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
workbook_a.save(f'{current_time}.xlsx')
原始数据:
效果:
标签:表格,font1,差异,EXCEL,cell,字体,workbook,font2,fill From: https://blog.csdn.net/qq_45173172/article/details/143627016