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

使用Python和openpyxl遍历行时的列取值报错求助

解决openpyxl遍历Excel时获取对应行B列数据的报错问题

你的报错根源在于代码里的单元格坐标写法错误:currentSheet['B''row'].value会被Python自动拼接成字符串'Brow',这显然不是一个合法的Excel单元格坐标,所以触发了ValueError。

结合你使用的openpyxl 2.4.9版本,我给你两种修正方案:

方案一:同时遍历A、B列(更高效)

直接在遍历的时候同时获取每行的A和B单元格,这样不用额外去查找B列,代码更简洁:

import openpyxl

wb = openpyxl.load_workbook('worksheet.xlsx')
# 切换到索引为1的工作表(对应你原来的wb.active=1操作)
currentSheet = wb.worksheets[1]

# 遍历从最小行到最大行的1-2列(A和B列)
for row in currentSheet.iter_rows(min_row=currentSheet.min_row, 
                                 max_row=currentSheet.max_row,
                                 min_col=1, 
                                 max_col=2):
    a_cell, b_cell = row
    # 检查A列单元格是否为空
    if not a_cell.value:
        print(b_cell.value)

方案二:基于A列单元格获取对应行的B列

如果你还是想单独遍历A列,可以通过A列单元格的row属性拿到行号,再构造B列的单元格坐标:

import openpyxl

wb = openpyxl.load_workbook('worksheet.xlsx')
currentSheet = wb.worksheets[1]

for row in currentSheet.iter_rows('A{}:A{}'.format(currentSheet.min_row, currentSheet.max_row)):
    a_cell = row[0]
    if not a_cell.value:
        # 用A列单元格的行号构造B列单元格地址
        b_cell = currentSheet['B{}'.format(a_cell.row)]
        print(b_cell.value)

另外补充一点:你原来代码里currentSheet = wb[sheets[n]]的写法,要确保n的值是正确的工作表索引(从0开始),如果是要切换到第二个工作表,n应该是1,和你设置wb.active=1的逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:53:17