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

如何在openpyxl中实现A列对应B列的动态数据写入?

问题分析与修复方案

你的代码存在几个关键问题导致无法正常工作:

  • 嵌套了完全不必要的B列遍历循环,逻辑冗余且混乱
  • 赋值时使用sheet_obj[cel]是错误的,cel是单元格对象,而非单元格坐标字符串(如"B2"),openpyxl无法通过对象索引定位单元格
  • 内层循环重复遍历A列单元格,导致逻辑错误
  • 缺少保存工作簿的步骤,即使赋值成功也不会写入文件

修正后的代码

import openpyxl

# 替换为你的文件路径
path = "your_excel_file.xlsx"
wb_obj = openpyxl.load_workbook(path)
sheet_obj = wb_obj.active

# 遍历A列第2到25行的单元格
for row in range(2, 26):
    # 获取A列当前行的单元格
    a_cell = sheet_obj[f"A{row}"]
    print(a_cell.value)
    # 获取输入并转为整数,写入对应B列单元格
    input_value = int(input("请输入对应内容:"))
    sheet_obj[f"B{row}"] = input_value

# 必须保存工作簿,否则修改不会生效
wb_obj.save(path)

另一种更直观的写法(使用单元格对象)

如果你习惯用iter_cols遍历单元格,可以这么写:

import openpyxl

path = "your_excel_file.xlsx"
wb_obj = openpyxl.load_workbook(path)
sheet_obj = wb_obj.active

# 遍历A列第2-25行的所有单元格
for col in sheet_obj.iter_cols(min_row=2, max_col=1, max_row=25):
    for a_cell in col:
        print(a_cell.value)
        input_value = int(input())
        # 通过offset获取同一行的B列单元格(列偏移1)
        b_cell = a_cell.offset(column=1)
        b_cell.value = input_value

wb_obj.save(path)

关键修复点说明

  • 去掉冗余的嵌套循环,直接针对每一行的A、B列单元格操作
  • 使用正确的单元格定位方式:要么通过坐标字符串(f"B{row}"),要么用单元格对象的offset方法获取同行的B列单元格
  • 添加wb_obj.save(path)步骤,确保修改写入到文件中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:58:16