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

使用Openpyxl修改已有Excel单元格值不生效问题咨询

问题原因

你代码的核心问题出在iter_rows的values_only=True参数:该参数会让迭代仅返回单元格值的只读快照,部分版本的openpyxl在该模式下会阻断写入操作的同步,导致你对单元格的赋值没有实际生效。同时你使用的get_sheet_by_name是已废弃的旧API,也可能引发兼容问题,另外没有处理首行A列为空的边界场景,会出现变量未定义的报错。

修复后的实现代码

import openpyxl

path = 'mypath/Python/Excel_test.xlsx'
workbook = openpyxl.load_workbook(path)
# 用索引方式替代废弃的get_sheet_by_name方法
worksheet = workbook['Tabelle1']

prev_text = None
# 移除values_only参数直接操作单元格对象,限定只遍历A列提升效率
for row_idx, row in enumerate(worksheet.iter_rows(min_col=1, max_col=1), start=1):
    current_cell = row[0]
    if current_cell.value is not None:
        prev_text = current_cell.value
    else:
        current_cell.value = prev_text

workbook.save('test.xlsx')

优化点说明

  • 用enumerate方法自动计数行号,避免手动维护变量i出现的计数错误
  • 限定遍历范围仅为A列,减少不必要的性能开销
  • 采用Python官方推荐的is not None做空值判断,逻辑更严谨
  • 提前初始化保存上一个非空值的变量,避免首行A列为空时出现变量未定义的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:54:10