You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现两个Excel表列值校验及匹配后关联填充数据

双Excel表匹配填充实现方案

方案1:Pandas实现(推荐,代码量少效率高)

import pandas as pd

# 读取两个表格,默认取前两列,可根据实际结构调整usecols参数
df1 = pd.read_excel('table_one.xlsx', usecols=[0,1])
df2 = pd.read_excel('table_two.xlsx', usecols=[0,1])

# 生成映射字典:key为第一张表第一列的值,value为对应第二列的值
map_dict = df1.set_index(df1.columns[0])[df1.columns[1]].to_dict()

# 给第二张表新增第三列,表头可自定义,这里示例为Column3
df2['Column3'] = df2[df2.columns[0]].map(map_dict)

# 输出结果到新文件,不建议直接覆盖原文件
df2.to_excel('result.xlsx', index=False)

方案2:Openpyxl实现(适配你原有代码的修正版)

你之前的代码问题在于字典存储逻辑错误,没有建立第一张表两列的映射关系,修正后代码如下:

import openpyxl as xl

map_dict = {}
# 读取第一张表构造映射字典
wb1 = xl.load_workbook("D:\\data1.xlsx")
ws1 = wb1.worksheets[0]
data1_max_row = ws1.max_row
# 从第2行开始遍历,跳过表头,可根据实际表头行调整起始值
for i in range(2, data1_max_row + 1):
    key = ws1.cell(i, 1).value
    val = ws1.cell(i, 2).value
    map_dict[key] = val

# 读取第二张表填充第三列
wb2 = xl.load_workbook("D:\\data2.xlsx")
ws2 = wb2.active
data2_max_row = ws2.max_row
# 新增第三列表头
ws2.cell(1, 3).value = "Column3"
# 逐行匹配
for i in range(2, data2_max_row + 1):
    current_val = ws2.cell(i, 1).value
    ws2.cell(i, 3).value = map_dict.get(current_val, "")

# 保存结果
wb2.save("D:\\result.xlsx")

注意事项

  • 如果表格表头不是第一行,调整读取/遍历的起始行号即可
  • 如果匹配列、取值列不是前两列,调整对应列索引即可
  • 建议运行代码前备份原文件,避免数据丢失

内容的提问来源于stack exchange,提问作者bardukiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:54:02