用Python把两个Excel表格中同一位置不同的数据用红色边框标记出来
时间: 2025-07-06 13:55:28 浏览: 10
在Python中,我们可以使用pandas库处理Excel文件,并结合openpyxl库来操作单元格样式。以下是一个简单的步骤来实现这个功能:
1. 首先,安装所需的库:
```bash
pip install pandas openpyxl
```
2. 使用pandas读取两个Excel文件到DataFrame中:
```python
import pandas as pd
df1 = pd.read_excel('file1.xlsx')
df2 = pd.read_excel('file2.xlsx')
```
3. 比较两列数据,找到不同之处:
```python
diff = df1.compare(df2, align='outer', keep_equal=False)
```
`align='outer'`会保留所有行,`keep_equal=False`表示只保留不同值。
4. 创建一个新的DataFrame,其中包含差异,并将不同的数据单元格设置为红色边框:
```python
import openpyxl
from openpyxl.styles import PatternFill, Border, Side
# 将差异转换回原始DataFrame的索引
diff_df = diff.stack().reset_index()
diff_df.columns = ['row', 'col', 'value']
# 加载第一个Excel的工作簿,用于修改样式
wb1 = load_workbook('file1.xlsx')
ws1 = wb1.active
# 对于每个不同的单元格
for index, row in diff_df.iterrows():
cell_ref = f"{row['row']}{row['col']}"
# 获取当前单元格对象
cell = ws1[cell_ref]
# 设置单元格内容(如果有的话)
if not pd.isnull(row['value']):
cell.value = row['value']
# 添加红色填充和边框
red_fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid')
border = Border(left=Side(style='thin', color='000000'),
right=Side(style='thin', color='000000'),
top=Side(style='thin', color='000000'),
bottom=Side(style='thin', color='000000'))
cell.fill = red_fill
cell.border = border
# 保存更改后的Excel工作簿
wb1.save('file1_with_diffs.xlsx')
```
完成以上步骤后,`file1_with_diffs.xlsx`中的差异数据将会用红色边框高亮显示。
阅读全文
相关推荐

















