我有一个 for 循环,它处理多个不同的数据帧,我试图将这些数据帧导出到一个 .xlsx 文件中,但在单独的工作表中。数据帧列为 dfs[i],相应的工作表名称为 sn[i]。
save_file
是从 tkinter asksaveasfilename
获得的。
在下面的循环中,我尝试将数据帧导出到 Excel 工作表选项卡,但我只得到一个选项卡,其中列表中包含最终数据帧:
for i in range(len(dfs)):
writer = pd.ExcelWriter(save_file.get(), engine = 'xlsxwriter')
dfs[i].to_excel(writer, sheet_name = sn[i], index=False)
writer.close()
同样,我尝试过这个命令,得到了相同的结果:
for i in range(len(dfs)):
with pd.ExcelWriter(save_file.get()) as writer:
dfs[i].to_excel(writer, sheet_name = sn[i], index=False)
当我在 for 循环中测试了
print(dfs[i])
和 print(sn[i])
时,它的显示完全按照预期,但我很困惑为什么只有列表中的最后一个元素导出到 Excel。任何帮助将不胜感激,谢谢!
你尝试过这个吗?
with pd.ExcelWriter(file_name) as writer:
for i in range(len(dfs)):
dfs[i].to_excel(writer, sheet_name = sn[i], index=False)
试试这个:
for i in range(len(dfs)):
if not os.path.exists(save_file.get()):
with ExcelWriter(save_file.get(), engine="openpyxl", mode="w") as writer:
dfs[i].to_excel(writer, sheet_name=sn[i])
with ExcelWriter(save_file.get(), engine="openpyxl", mode="a", if_sheet_exists="replace") as writer:
dfs[i].to_excel(writer, sheet_name=sn[i])