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

如何在for循环每次迭代时将列表数据写入Excel行

问题分析与解决方案

问题根源

  1. 每次循环新建Workbook导致数据覆盖:你在循环内每次执行wb = Workbook(),会创建一个全新的空白Excel文件,每次保存都会覆盖之前的版本,最终只保留最后一次迭代的数据。
  2. 列表追加方式错误:final_result = final_result.append(result_list) 是错误写法,append()方法是原地修改列表,返回值为None,执行后final_result会变成None,后续循环会抛出异常。

解决方案1:先收集所有数据,统一写入Excel

适合数据量不大的场景,先把所有迭代结果存入列表,循环结束后一次性写入Excel,避免重复创建文件:

from openpyxl import Workbook

final_result = []
for i in range(0, 3):
    result_list = ['csm_biscuit_main_dev-7188-userdevsigned', 'Logd', 'G0B0LF036224003G', 'Biscuit', 'completed', '1:47:54', 'completed']
    
    # 执行修改result_list的业务逻辑
    # ...

    final_result.append(result_list)  # 正确追加,无需赋值
    print(final_result)

# 循环结束后统一写入Excel
wb = Workbook()
sh1 = wb.active
for row_data in final_result:
    sh1.append(row_data)
wb.save("Report.xlsx")

解决方案2:每次循环加载已存在的文件(适合大数据量)

如果数据量很大,不想占用过多内存,可以每次循环判断文件是否存在,存在则加载后追加行,不存在则新建:

from openpyxl import Workbook, load_workbook
import os

for i in range(0, 3):
    result_list = ['csm_biscuit_main_dev-7188-userdevsigned', 'Logd', 'G0B0LF036224003G', 'Biscuit', 'completed', '1:47:54', 'completed']
    
    # 执行修改result_list的业务逻辑
    # ...

    # 处理Excel文件
    if os.path.exists("Report.xlsx"):
        wb = load_workbook("Report.xlsx")
        sh1 = wb.active
    else:
        wb = Workbook()
        sh1 = wb.active
    
    sh1.append(result_list)
    wb.save("Report.xlsx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:10:30