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

如何用Python的openpyxl从Excel行数据创建元组列表

如何用openpyxl将Excel每行转为元组并组成列表?

你现在的问题是代码把所有单元格值都扁平化到一个列表里了,没有按行分组。其实只需要调整循环逻辑,按行收集值并转成元组就能解决。

先看你原代码的问题:

from openpyxl import load_workbook
workbook = load_workbook('work_1.xlsx')
worksheet = workbook.get_sheet_by_name('Sheet1')
sheet_cells = []
for rows in worksheet.iter_rows():
    for cell in rows:
        sheet_cells.append(cell.value)
print sheet_cells

这段代码在遍历每一行后,又嵌套遍历每个单元格,直接把单个值加到列表里,自然会把所有值都混在一起。

修改后的代码方案

我给你两种可行的写法,都能实现需求:

方法一:使用iter_rows的values_only参数(推荐)

这个参数能让迭代行时直接返回单元格的值,不用手动取cell.value,代码更简洁:

from openpyxl import load_workbook
workbook = load_workbook('work_1.xlsx')
# 注意:get_sheet_by_name已被弃用,新版本推荐直接用下标访问工作表
worksheet = workbook['Sheet1']
sheet_cells = []
# values_only=True 直接获取每行的单元格值组成的元组
for row in worksheet.iter_rows(values_only=True):
    sheet_cells.append(row)
print(sheet_cells)

方法二:手动遍历单元格并组装元组

如果你习惯手动处理每个单元格,也可以这样写:

from openpyxl import load_workbook
workbook = load_workbook('work_1.xlsx')
worksheet = workbook['Sheet1']
sheet_cells = []
for row in worksheet.iter_rows():
    # 用生成器表达式收集当前行的所有单元格值,再转成元组
    row_values = tuple(cell.value for cell in row)
    sheet_cells.append(row_values)
print(sheet_cells)

说明

  • 两种方法运行后都会得到你想要的结果:[(1L,2L,3L,4L),(5L,6L,7L,8L),(9L,10L,11L,12L)]
  • 替换get_sheet_by_name是因为这个方法在openpyxl新版本中已被标记为废弃,使用workbook['工作表名']是更规范的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:03:20