当前位置:首页>python>python自动化系列:轻松找出两份表格间的细微差别

python自动化系列:轻松找出两份表格间的细微差别

  • 2026-10-11 12:16:29
python自动化系列:轻松找出两份表格间的细微差别
作品介绍

作品名称:轻松找出两份表格间的细微差别

用到的库:openpyxl、copy

作品简介:该实例使用openpyxl库来比较两个Excel文件中指定工作表的内容,并在一个新的工作簿中高亮显示差异。

实现过程

一、代码设计

  1. 导入必要的库:

    • load_workbook和Workbook:用于加载和创建Excel工作簿。
    • PatternFill:用于设置单元格的填充样式。
    • copy:用于复制对象,这里用于复制单元格样式。
  2. 定义两种颜色填充模式:

    • red_fill:浅红色填充,用于高亮显示不同之处。
    • green_fill:浅绿色填充,用于显示第二个文件中不同的数据。
  3. 定义highlight_diff函数,该函数接收以下参数:

    • file_path_1和file_path_2:两个Excel文件的路径。
    • sheet_name:要比较的工作表名称。
    • output_path:输出文件的路径。
  4. 加载两个Excel文件,并获取指定的工作表。

  5. 创建一个新的工作簿,并设置活动工作表的标题为"Comparison"。

  6. 复制第一个Excel文件的格式到新工作簿:

    • 遍历第一个工作表的所有行和单元格。
    • 将每个单元格的值和样式复制到新工作表的对应单元格。
  7. 比较两个Excel文件的数据,并在新文件中标记差异:

    • 遍历两个工作表的所有单元格。
    • 如果两个单元格的值不同,将新工作表中对应单元格的填充设置为红色。
    • 同时,在相邻的列写入第二个文件的数据,并设置填充为绿色。
  8. 添加标题行以标识第二组数据来自哪个文件。

  9. 保存新工作簿到指定的输出路径。

  10. 设置两个Excel文件的路径和输出文件的路径,并调用highlight_diff函数执行比较和高亮显示差异的操作。

  11. 打印处理完成的消息和输出文件的路径。

from openpyxl import load_workbook, Workbookfrom openpyxl.styles import PatternFillfromcopy import copy# 定义颜色填充模式用于高亮显示red_fill = PatternFill(start_color="FFCCCB", end_color="FFCCCB", fill_type="solid")  # 浅红色green_fill = PatternFill(start_color="90EE90", end_color="90EE90", fill_type="solid")  # 浅绿色def highlight_diff(file_path_1, file_path_2, sheet_name, output_path):    # 加载原始Excel文件    wb1 = load_workbook(filename=file_path_1)    wb2 = load_workbook(filename=file_path_2)    ws1 = wb1[sheet_name]    ws2 = wb2[sheet_name]    # 创建一个新的工作簿以保存结果    wb_output = Workbook()    ws_output = wb_output.active    ws_output.title = "Comparison"    # 复制第一个Excel文件的格式到新文件forrowin ws1.iter_rows(values_only=False):for cell inrow:            new_cell = ws_output.cell(row=cell.row, column=cell.column, value=cell.value)            if cell.has_style:                new_cell.font =copy(cell.font)                new_cell.border =copy(cell.border)                new_cell.fill =copy(cell.fill)                new_cell.number_format =copy(cell.number_format)                new_cell.protection =copy(cell.protection)                new_cell.alignment =copy(cell.alignment)    # 比较两个Excel文件,并在新文件中标记差异forrowinrange(1, ws1.max_row +1):for col inrange(1, ws1.max_column +1):            cell1_value = ws1.cell(row=row, column=col).value            cell2_value = ws2.cell(row=row, column=col).value            # 如果值不同,则高亮显示            if cell1_value != cell2_value:                ws_output.cell(row=row, column=col).fill = red_fill                # 同时写入第二个表格的数据到相邻的列,并高亮显示                ws_output.cell(row=row, column=col + ws1.max_column).value= cell2_value                ws_output.cell(row=row, column=col + ws1.max_column).fill = green_fill    # 添加标题行以标识第二组数据来自哪个文件for col inrange(1, ws1.max_column +1):        ws_output.cell(row=1, column=col + ws1.max_column, value=f"file2: {ws1.cell(row=1, column=col).value}")    # 保存新工作簿    wb_output.save(output_path)# 读取两个Excel文件file_path_1 ='file1.xlsx'file_path_2 ='file2.xlsx'# 比较并高亮显示差异output_file_path ='highlighted_diff.xlsx'highlight_diff(file_path_1, file_path_2, '汇总表', output_file_path)print("处理完成,已保存到:", output_file_path)

二、结语

以上就是本次分享的全部内容,如果你有任何疑问或想要分享你的自动化办公经验,我们的评论区永远为你敞开。你的每一个点赞和转发,都是对我们最大的支持和鼓励!

想要深入学习并获取文中的完整代码吗?很简单,关注我们的公众号,并回复文章标题,即可立即获取。

再次感谢你的阅读,期待在下一次分享中与你相见!

精选阅读
python自动化系列:轻松合并文件夹内所有TXT文件
python自动化系列:比较两个txt的内容
python自动化系列:将文本(txt)文件转换为其他格式
python自动化系列:统计txt文件中单词的出现频次并倒序
python自动化系列:将多个工作簿数据分类汇总到一个工作簿
python自动化系列:一键替换文档关键词
python自动化系列:旋转PDF文件特定页面
python自动化系列:过滤文本(txt)的内容
python自动化系列:抓取财经精选新闻
python自动化系列:一键重命名文件,轻松跟踪修改历史
python自动化系列:一键删除PDF文档密码

python自动化系列:pdf页面转图片

python自动化系列:重新排列pdf页面的顺序

python自动化系列:裁剪pdf特定页面特定区域

python自动化系列:将Excel表格中的学生信息自动填充到一个word文档

python自动化系列:轻松合并PDF文件特定页面

python自动化系列:将Excel表格中的学生多条信息自动填充到一个Word文档

python自动化系列:如何轻松为PDF文件添加统一水印

最新文章

随机文章