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

为何出现IndexError: list index out of range?如何用索引更新Excel单元格值

解决IndexError: list index out of range问题

错误原因

你选中的单元格范围A1:F1包含6个单元格,但line_7data只有4个元素。当enumerate遍历到第5、6个单元格时,count会变成4、5,超出了line_7data的索引范围(列表索引从0开始,最大索引为3),因此触发IndexError。

解决方案

方案1:缩小单元格范围匹配数据长度

如果只需要更新前4个单元格(A1到D1),直接修改选区范围:

from openpyxl import load_workbook

book = load_workbook('Line_Machines_Data.xlsx')
sheet = book['Line 7 machines']

line_7data = [15, 20, 30, 40]

for row in sheet['A1':'D1']:
    for count, cell in enumerate(row):      
        cell.value = line_7data[count] 
book.save('Line_Machines_Data.xlsx')

方案2:保留原选区,仅更新对应索引的单元格

如果必须保留A1:F1的选区,可通过判断索引范围避免越界,剩余单元格可设为默认值:

from openpyxl import load_workbook

book = load_workbook('Line_Machines_Data.xlsx')
sheet = book['Line 7 machines']

line_7data = [15, 20, 30, 40]

for row in sheet['A1':'F1']:
    for count, cell in enumerate(row):      
        if count < len(line_7data):
            cell.value = line_7data[count]
        else:
            cell.value = None  # 可替换为你需要的默认值
book.save('Line_Machines_Data.xlsx')

方案3:用zip自动配对数据与单元格

zip会自动将数据和单元格一一配对,直到其中一方耗尽,无需手动处理索引:

from openpyxl import load_workbook

book = load_workbook('Line_Machines_Data.xlsx')
sheet = book['Line 7 machines']

line_7data = [15, 20, 30, 40]

for row in sheet['A1':'F1']:
    for cell, value in zip(row, line_7data):
        cell.value = value
book.save('Line_Machines_Data.xlsx')

方案4:使用自定义索引变量实现迭代

如果你坚持用自定义索引变量,可参考以下写法:

from openpyxl import load_workbook

book = load_workbook('Line_Machines_Data.xlsx')
sheet = book['Line 7 machines']

line_7data = [15, 20, 30, 40]

for row in sheet['A1':'D1']:
    index = 0
    for cell in row:
        cell.value = line_7data[index]
        index += 1
book.save('Line_Machines_Data.xlsx')

或者通过range和len定位单元格:

from openpyxl import load_workbook

book = load_workbook('Line_Machines_Data.xlsx')
sheet = book['Line 7 machines']

line_7data = [15, 20, 30, 40]

# 提取A1到D1的第一行单元格
cells = sheet['A1':'D1'][0]
for i in range(len(line_7data)):
    cells[i].value = line_7data[i]
book.save('Line_Machines_Data.xlsx')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:57:19