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

如何使用openpyxl按行名称和列标题更新指定单元格

问题解决方案

你的代码存在几个关键问题,导致无法正确定位并更新目标单元格:

  • 变量大小写不统一:Wb 和 wb 是两个不同的变量,会触发命名错误
  • 直接用日期字符串作为column参数无效:openpyxl的cell方法的column参数需要整数列号,不能直接传入文本格式的列标题
  • 遍历范围未覆盖完整行:range(2, Ws.max_rows)是左闭右开区间,会漏掉最后一行数据
  • 未保存工作簿:修改后未将更改写入文件

修正后的代码如下:

from openpyxl import load_workbook

# 加载工作簿并定位工作表
wb = load_workbook('file.xlsx')
ws = wb['VD CONQUETE DC']

# 定义目标行标识和列标题
target_row_name = 'SFR BOX HBD ECO THD'
target_col_title = '2022,10,31'

# 第一步:找到目标列对应的列号
target_col_num = None
for col in range(1, ws.max_column + 1):
    if ws.cell(row=1, column=col).value == target_col_title:
        target_col_num = col
        break

# 第二步:找到目标行并更新单元格
if target_col_num:
    for row in range(2, ws.max_row + 1):
        # 假设行名称存储在第3列
        current_row_name = ws.cell(row=row, column=3).value
        if current_row_name == target_row_name:
            ws.cell(row=row, column=target_col_num, value=vente1date1)
            break  # 找到目标行后直接跳出循环,提升效率

# 保存修改后的文件
wb.save('file_updated.xlsx')

代码说明:

  1. 先遍历工作表第一行,匹配目标列标题并记录对应列号,解决了日期字符串无法直接定位列的问题
  2. 统一变量命名规范,避免大小写不一致导致的错误
  3. 遍历行时加入终止逻辑,找到目标行后立即停止遍历,减少不必要的计算
  4. 增加目标列存在性判断,避免因列标题不存在引发后续错误
  5. 最后调用save方法将修改写入文件,确保更改生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:50:27