使用xlsxwriter导出Python循环结果至Excel仅显示表头与单行的问题求助
Excel仅导出一行数据的修复方案
原代码的核心问题
- 每次循环都重新创建
data字典,仅存储当前循环的单条数据,之前收集的数据被完全覆盖 - 在循环内部调用
workbook.close(),导致第一次循环执行后就关闭了工作簿,后续数据根本无法写入 - 重复写入表头,属于无效操作
修复后的代码
response_data = x.json() # 避免使用内置类型名"list"作为变量名 workbook = xlsxwriter.Workbook('test.xlsx') worksheet = workbook.add_worksheet() # 初始化列表存储所有数据 item1_list = [] item2_list = [] # 遍历JSON数据,批量收集所有目标值 for item in response_data: # 注意:原代码中的value1/value2应为当前循环的item,此处修正 item1 = item['valueID1'] item2 = item['valueID2'] item1_list.append(item1) item2_list.append(item2) # 构建包含完整数据的字典 data = { "item1": item1_list, "item2": item2_list } # 一次性写入表头和整列数据 col_num = 0 for key, value in data.items(): worksheet.write(0, col_num, key) worksheet.write_column(1, col_num, value) col_num += 1 # 所有数据写入完成后再关闭工作簿 workbook.close()
关键修改说明
- 替换变量名
list为response_data,避免与Python内置list类型冲突 - 先通过循环批量收集所有数据到列表,再统一写入Excel,避免单次循环覆盖数据
- 将
workbook.close()移至所有写入操作之后,确保全部数据都能写入工作簿 - 仅写入一次表头,避免重复操作
内容的提问来源于stack exchange,提问作者l3xand3r
相关产品推荐
相关产品推荐

