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

Openpyxl实现按列筛选后将指定列ID追加至另一工作表

解决方案

因为Sheet1和Sheet2存在同名列,直接用固定索引定位列很容易因为列位置变动出错,建议通过列名来映射目标ID列,这样更灵活可靠。以下是修改后的代码,完美匹配你的需求:

import openpyxl

wb = openpyxl.load_workbook("workbook.xlsx")
sheet1 = wb["sheet_1"]
sheet2 = wb["sheet_2"]

# 读取Sheet1表头,建立列名到列索引的映射(默认表头在第一行)
header = [cell.value for cell in next(sheet1.iter_rows(min_row=1, max_row=1))]
# 把这里的"ID"替换成你实际要提取的ID列的列名
target_id_col = "ID"
if target_id_col not in header:
    raise ValueError(f"Sheet1里找不到名为'{target_id_col}'的列")
id_col_idx = header.index(target_id_col)

# 遍历Sheet1的数据行(从第二行开始,跳过表头)
for row in sheet1.iter_rows(min_row=2):
    # 筛选第一列值为"New"的行
    if row[0].value == "New":
        id_value = row[id_col_idx].value
        # 将ID追加到Sheet2的第一列,append会自动追加到已有数据的下一行
        sheet2.append([id_value])

# 记得保存修改后的文件
wb.save("updated_workbook.xlsx")

关键优化点

  • 用列名匹配代替硬编码索引,就算列的位置变了也不会出错
  • 只提取你需要的ID列值,而不是整行追加,完全符合需求
  • 跳过表头行,避免误处理表头数据
  • 增加了列名不存在的校验,防止运行时出现无意义的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:22:08