如何在循环中将每个生成的data_list写入Excel的独立工作表?
解决Excel多工作表写入覆盖问题
问题核心是你每次循环都重新创建ExcelWriter实例,这会导致每次写入都覆盖整个文件。正确的做法是仅初始化一次ExcelWriter,在循环内持续添加新工作表,最后统一完成文件保存。
修改后的代码如下:
start = 0 finish = 1 datas = response.json() # 将ExcelWriter初始化放在循环外部 writer = pd.ExcelWriter('test.xlsx') while finish < 11: data = datas[start:finish] data_list = [] # some code for generating the data_list df = pd.DataFrame(data_list) # 向已有的writer实例中添加新工作表 df.to_excel(writer, sheet_name=f'{finish}', index=False) finish += 1 start += 1 # 所有工作表添加完成后,统一保存文件 writer._save()
关键改动说明
- 把
pd.ExcelWriter('test.xlsx')移到循环外,确保整个过程只打开一次目标文件,避免重复覆盖。 - 循环内仅执行
df.to_excel()操作,通过指定不同的sheet_name来创建独立工作表。 - 所有循环逻辑完成后,再调用
writer._save()完成最终的文件写入。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

