Save list of DataFrames to multisheet Excel spreadsheet Save list of DataFrames to multisheet Excel spreadsheet python python

Save list of DataFrames to multisheet Excel spreadsheet


You should be using pandas own ExcelWriter class:

from pandas import ExcelWriter# from pandas.io.parsers import ExcelWriter

Then the save_xls function works as expected:

def save_xls(list_dfs, xls_path):    with ExcelWriter(xls_path) as writer:        for n, df in enumerate(list_dfs):            df.to_excel(writer,'sheet%s' % n)        writer.save()


In case anyone needs an example using a dictionary of dataframes:

from pandas import ExcelWriterdef save_xls(dict_df, path):"""Save a dictionary of dataframes to an excel file, with each dataframe as a separate page"""    writer = ExcelWriter(path)    for key in dict_df:        dict_df[key].to_excel(writer, key)    writer.save()

example:save_xls(dict_df = my_dict, path = '~/my_path.xls')


Sometimes there can be issues(Writing an excel file containing unicode), if there are some non supporting character type in the data frame. To overcome it we can use 'xlsxwriter' package as in below case:

for below code:

from pandas import ExcelWriterimport xlsxwriterwriter = ExcelWriter('notes.xlsx')for key in dict_df:        data[key].to_excel(writer, key,index=False)writer.save()

I got the error as "IllegalCharacterError"

The code that worked:

%pip install xlsxwriterfrom pandas import ExcelWriterimport xlsxwriterwriter = ExcelWriter('notes.xlsx')for key in dict_df:        data[key].to_excel(writer, key,index=False,engine='xlsxwriter')writer.save()