Pertanyaan lama, tapi saya rasa beberapa orang masih mencari ini - jadi ...
Saya menemukan metode ini bagus karena semua lembar kerja dimuat ke dalam kamus nama lembar dan pasangan kerangka data, dibuat oleh panda dengan opsi nama lembar = Tidak ada. Sangat mudah untuk menambahkan, menghapus, atau memodifikasi lembar kerja antara membaca spreadsheet ke dalam format dict dan menulisnya kembali dari dict. Bagi saya xlsxwriter bekerja lebih baik daripada openpyxl untuk tugas khusus ini dalam hal kecepatan dan format.
Catatan: versi panda yang akan datang (0.21.0+) akan mengubah parameter "sheetname" menjadi "sheet_name".
# 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)
Untuk contoh pada pertanyaan 2013:
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)