在 Pandas
.to_excel
文档的末尾,它展示了如何按顺序编写表格:
>>> writer = pd.ExcelWriter('output.xlsx')
>>> df1.to_excel(writer,'Sheet1')
>>> df2.to_excel(writer,'Sheet2')
>>> writer.save()
有没有办法让我在我的Python程序中先写入
sheet2
,然后写入sheet1
。但是,我仍然需要 sheet1
出现在最终 excel 文件中的 before sheet2
?
正如jmcnamara所写,由于Excel的内部结构,不建议更改工作表的顺序,但您可以使用
activate()
更改打开Excel文件时哪个工作表处于活动状态:
>>> writer = pd.ExcelWriter('output.xlsx')
>>> df1.to_excel(writer,'Sheet1')
>>> df2.to_excel(writer,'Summary')
>>> writer.sheets['Summary'].activate()
>>> writer.save()
当您打开 Excel 文件时,将显示名为“Summary”的工作表,尽管“Sheet1”仍将是第一个工作表。
写一张空纸,然后在计算出你的总结作品后在同一张纸上重写:
writer = pd.ExcelWriter(filepath)
stats = []
pd.DataFrame.from_dict([],orient='columns').to_excel(writer, sheet_name="Stats", index=None, index_label=None)
for page in pages:
# calculate and fill in stats
# append my page data in it's own sheet
pd.DataFrame.from_dict(stats,orient='columns').to_excel(writer, sheet_name="Stats", index=None, index_label=None)
结果:
我在 python 3.10.12 上使用 pandas 2.2.1,并以 openpyxl 3.1.2 作为引擎。
创建一个字典,将工作表保存为值,将工作表名称保存为键。然后通过按所需顺序创建键列表来选择写入表格的顺序。
writer = pd.ExcelWriter('output.xlsx')
sheet_dict = {}
sheet_dict.update({'Sheet1': df1})
sheet_dict.update({'Summary': df2})
for key in ['Summary', 'Sheet1']:
sheet_dict[key].to_excel(writer, key)
writer.save()