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

使用openpyxl将二维列表写入Excel单列的问题求助

问题分析与修正方案

你的代码存在几个关键问题导致无法正常运行,我来逐一拆解并给出修复后的完整代码:

核心问题点

  • openpyxl的索引规则:openpyxl中单元格的行和列都是从1开始计数的,而你的代码里直接用从0开始的循环变量作为行号,这会触发索引错误。
  • 元素赋值错误:你把整个子列表My_list[i]直接赋值给了单元格,而不是取子列表里的单个元素My_list[i][j]。
  • 缺少初始化步骤:代码里没有创建工作簿和工作表的初始化逻辑,这也是运行失败的重要原因。

修复后的完整代码

from openpyxl import Workbook

# 你的原始列表
My_list = [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25], [3, 6, 9, 12, 15]]

# 初始化工作簿和默认活动工作表
wb = Workbook()
sheet = wb.active

# 遍历每个子列表,对应Excel的一列
for col_index, sublist in enumerate(My_list, start=1):
    # 遍历子列表中的每个元素,对应列中的每一行
    for row_index, value in enumerate(sublist, start=1):
        # 将单个元素写入对应单元格
        sheet.cell(row=row_index, column=col_index).value = value

# 保存生成的Excel文件
wb.save("result.xlsx")

代码说明

  1. 索引适配:用enumerate(..., start=1)直接获取从1开始的行列号,完美匹配openpyxl的索引规则,避免手动加1的繁琐操作。
  2. 正确赋值:通过value变量直接取子列表中的单个元素,确保每个单元格只写入一个数值,符合Excel的单元格存储逻辑。
  3. 完整流程:包含了工作簿初始化、数据写入、文件保存的完整流程,代码可以直接运行生成有效的Excel文件。

如果你更习惯用原始的循环写法,也可以这样修改:

from openpyxl import Workbook

My_list = [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25], [3, 6, 9, 12, 15]]

wb = Workbook()
sheet = wb.active

for i in range(len(My_list)):
    # 列号从1开始,所以i+1
    column = i + 1
    for j in range(len(My_list[i])):
        # 行号从1开始,所以j+1
        row = j + 1
        # 取子列表的第j个元素赋值给单元格
        sheet.cell(row=row, column=column).value = My_list[i][j]

wb.save("result.xlsx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:17:07