怎么对比两个excel文档的数据差异

本文转载了百度经验的一篇文章,并附上了原文链接及转载来源。虽然具体内容未给出,但通常涉及实用技巧或指南等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百度经验:

https://jingyan.baidu.com/article/6181c3e0877c7a152ef15304.html

转载于:https://www.cnblogs.com/hongming-blogs/p/8278901.html

### 实现Python对比两个Excel文档差异 对于数据处理和分析工作中的需求,即比较两个Excel文件的差异以验证一致性、检查准确性或追踪更改,可以利用`openpyxl`库来完成这项任务。此方法能够有效减少人工操作带来的错误风险以及时间成本。 #### 安装必要的库 在开始之前,需确保已安装`openpyxl`库用于读取与写入Excel文件[^1]: ```bash pip install openpyxl ``` #### 编写比较逻辑 下面展示一段简单的Python脚本,该脚本能加载两个指定路径下的Excel文件,并逐行对比其内容,最后将不同的单元格标记出来保存至新的Excel文件中。 ```python import openpyxl from copy import deepcopy def compare_excel(file_path_1, file_path_2, output_file='diff.xlsx'): wb1 = openpyxl.load_workbook(filename=file_path_1) wb2 = openpyxl.load_workbook(filename=file_path_2) ws_names = set(wb1.sheetnames).intersection(set(wb2.sheetnames)) diff_wb = openpyxl.Workbook() for name in ws_names: ws1 = wb1[name] ws2 = wb2[name] max_row = max(ws1.max_row, ws2.max_row) max_col = max(ws1.max_column, ws2.max_column) new_ws = diff_wb.create_sheet(title=name) for r in range(1, max_row + 1): for c in range(1, max_col + 1): cell_value_1 = ws1.cell(row=r, column=c).value cell_value_2 = ws2.cell(row=r, column=c).value if cell_value_1 != cell_value_2: # Highlight differences with red background color and bold font. fill = openpyxl.styles.PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid") font = openpyxl.styles.Font(bold=True) new_cell = new_ws.cell(row=r, column=c, value=f"{cell_value_1} -> {cell_value_2}") new_cell.fill = fill new_cell.font = font else: new_ws.cell(row=r, column=c, value=deepcopy(cell_value_1)) del diff_wb['Sheet'] # Remove default sheet created by Workbook(). diff_wb.save(output_file) if __name__ == '__main__': compare_excel('example1.xlsx', 'example2.xlsx') ``` 上述代码实现了基本的功能——打开两份待比较的工作簿;遍历共同拥有的工作表名称集合;针对每一对相同名字的工作表,计算行列的最大范围以便全面覆盖可能存在的差异区域;当发现某位置上的值不一致时,在新创建的结果表格对应的位置上记录下变化前后的值,并应用样式突出显示这些区别之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值