非常实用的问题 👍
我们可以用 Python(pandas库) 快速实现「比较两个 Excel 文件中指定列是否一致」的功能。下面我会详细讲两种常见方案:


✅ 一、快速对比脚本(核心版)

比如有两个 Excel 文件:

  • file1.xlsx
  • file2.xlsx

我们只想比较它们的某一列(或几列),例如:"编号""姓名"

import pandas as pd

# === 1. 读取两个 Excel 文件 ===
file1 = pd.read_excel('file1.xlsx')
file2 = pd.read_excel('file2.xlsx')

# === 2. 指定要比较的列 ===
col = '编号'  # 或者 ['编号', '姓名']

# === 3. 比较列是否完全一致 ===
if file1[col].equals(file2[col]):
    print(f"✅ 两个文件的【{col}】列完全一致!")
else:
    print(f"❌ 两个文件的【{col}】列不一致!")

    # 查看不同的数据行
    diff = file1[file1[col] != file2[col]]
    print("不同之处:")
    print(diff)

📘 功能说明

  • .equals()pandas 的内置方法,用于判断两列是否完全相同(包括顺序)。
  • 如果有差异,会打印出不一样的行。

✅ 二、进阶对比(多列 & 忽略顺序)

有时你可能希望:

  • 只比较几个关键列;
  • 不关心顺序;
  • 想知道哪些多了/少了。

那可以用下面这个版本👇:

import pandas as pd

# === 读取文件 ===
f1 = pd.read_excel('file1.xlsx')
f2 = pd.read_excel('file2.xlsx')

# === 要比较的列 ===
cols = ['编号', '姓名']

# === 取指定列并去重 ===
df1 = f1[cols].drop_duplicates().reset_index(drop=True)
df2 = f2[cols].drop_duplicates().reset_index(drop=True)

# === 通过 merge 找出差异 ===
merged = df1.merge(df2, on=cols, how='outer', indicator=True)

# === 筛选出不同的记录 ===
diff = merged[merged['_merge'] != 'both']

if diff.empty:
    print("✅ 两个文件在指定列上完全一致!")
else:
    print("❌ 存在不一致的记录:")
    print(diff)

📊 输出解释

_merge 值含义
left_only只在 file1.xlsx 中有
right_only只在 file2.xlsx 中有
both两边都有(相同)

✅ 三、保存对比结果到 Excel

如果文件较大,建议把结果导出成一个对比报告:

diff.to_excel('compare_result.xlsx', index=False)
print("📝 对比结果已保存到 compare_result.xlsx")


✅ 四、更多可选项(根据需求)

需求实现方式
忽略大小写在比较前 .str.lower()
忽略空格.str.strip()
比较数字列时忽略精度误差numpy.isclose()
只输出不一致行号file1[file1[col] != file2[col]].index

📍实战例子

假设两个表如下:

file1.xlsx

编号姓名年龄
1张三22
2李四25
3王五30

file2.xlsx

编号姓名年龄
1张三22
2李四26
3王五30

运行后输出:

❌ 两个文件的【年龄】列不一致!
不同之处:
   编号  姓名  年龄
1   2  李四   25


是否希望我帮你生成一个可直接运行的 命令行工具版 compare_excel.py
可以通过命令行参数指定文件名和列名,例如:

python compare_excel.py file1.xlsx file2.xlsx 编号 姓名

并自动导出差异结果。