Eski soru, ama tahmin ediyorum ki bazı insanlar hala bunu arıyor - yani ...
Bu yöntemi güzel buluyorum çünkü tüm çalışma sayfaları pandalar tarafından sheetname = None seçeneğiyle oluşturulan bir sayfa adı ve veri çerçevesi çiftleri sözlüğüne yükleniyor. Elektronik tabloyu dikte biçiminde okuma ve dikteden geri yazma arasında çalışma sayfalarını eklemek, silmek veya değiştirmek kolaydır. Benim için xlsxwriter, hız ve format açısından bu özel görev için openpyxl'den daha iyi çalışıyor.
Not: Pandaların (0.21.0+) gelecekteki sürümleri "sayfa adı" parametresini "sayfa_adı" olarak değiştirecektir.
# read a single or multi-sheet excel file
# (returns dict of sheetname(s), dataframe(s))
ws_dict = pd.read_excel(excel_file_path,
sheetname=None)
# all worksheets are accessible as dataframes.
# easy to change a worksheet as a dataframe:
mod_df = ws_dict['existing_worksheet']
# do work on mod_df...then reassign
ws_dict['existing_worksheet'] = mod_df
# add a dataframe to the workbook as a new worksheet with
# ws name, df as dict key, value:
ws_dict['new_worksheet'] = some_other_dataframe
# when done, write dictionary back to excel...
# xlsxwriter honors datetime and date formats
# (only included as example)...
with pd.ExcelWriter(excel_file_path,
engine='xlsxwriter',
datetime_format='yyyy-mm-dd',
date_format='yyyy-mm-dd') as writer:
for ws_name, df_sheet in ws_dict.items():
df_sheet.to_excel(writer, sheet_name=ws_name)
2013 sorusundaki örnek için:
ws_dict = pd.read_excel('Masterfile.xlsx',
sheetname=None)
ws_dict['Main'] = data_filtered[['Diff1', 'Diff2']]
with pd.ExcelWriter('Masterfile.xlsx',
engine='xlsxwriter') as writer:
for ws_name, df_sheet in ws_dict.items():
df_sheet.to_excel(writer, sheet_name=ws_name)