You need to enable JavaScript to run this app. Python中如何将Excel整行/整列存储为变量及openpyxl取值报错解决
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将Excel整行/整列存储为变量及openpyxl取值报错解决

报错原因

openpyxl 工作表对象的 .columns 属性返回的是生成器(generator)对象,本身不支持下标索引操作,因此直接写 wb['sheet2'].columns["B"] 时,会触发 TypeError: 'generator' object is not subscriptable 报错。
该生成器的迭代逻辑是逐列输出整列单元格组成的元组,既不支持按列名字符串做索引,也没有可直接调用的 .values 属性。

整列数据存储到单个变量的可行方案
  • 最推荐的简洁实现:
    openpyxl 的工作表本身支持直接传入列名字符串(如 'B')获取整列的单元格迭代器,遍历过程中读取每个单元格的 .value 属性,即可将整列所有数据存入单个列表变量:
    import openpyxl
    wb = openpyxl.load_workbook("coordinates.xlsx")
    sh2 = wb['sheet2']
    # 提取sheet2中B列全部单元格值,存入x1变量
    x1 = [cell.value for cell in sh2['B']]
    print(x1)
    
  • 空值过滤版本:
    如果不需要保留空单元格的None值,可以在遍历时增加判断条件,过滤无内容的单元格:
    x1 = [cell.value for cell in sh2['B'] if cell.value is not None]
    
  • 基于.columns属性的兜底实现(不推荐):
    若一定要使用.columns属性,必须先将生成器转换为列表结构,再通过数字索引定位目标列。其中A列对应索引0,B列对应索引1:
    # 仅作原理演示,扫描全表结构的效率低于直接列名索引
    columns_list = list(wb['sheet2'].columns)
    b_column_cell_tuples = columns_list[1]
    x1 = [cell.value for cell in b_column_cell_tuples]
    

注意:openpyxl 遍历时会扫描所有曾经被编辑过的行,哪怕当前行内容为空,也会被纳入列的遍历范围,不需要空值时记得按上面的方案增加过滤条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 17:24:04