class pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', **engine_kwargs)[source]

Class for writing DataFrame objects into excel sheets, default is to use xlwt for xls, openpyxl for xlsx. See DataFrame.to_excel for typical usage.

path : string

Path to xls or xlsx file.

engine : string (optional)

Engine to use for writing. If None, defaults to io.excel.<extension>.writer. NOTE: can only be passed as a keyword argument.

date_format : string, default None

Format string for dates written into Excel files (e.g. ‘YYYY-MM-DD’)

datetime_format : string, default None

Format string for datetime objects written into Excel files (e.g. ‘YYYY-MM-DD HH:MM:SS’)

mode : {‘w’, ‘a’}, default ‘w’

File mode to use (write or append).

New in version 0.24.0.


None of the methods and properties are considered public.

For compatibility with CSV writers, ExcelWriter serializes lists and dicts to strings before writing.


Default usage:

>>> with ExcelWriter('path_to_file.xlsx') as writer:
...     df.to_excel(writer)

To write to separate sheets in a single file:

>>> with ExcelWriter('path_to_file.xlsx') as writer:
...     df1.to_excel(writer, sheet_name='Sheet1')
...     df2.to_excel(writer, sheet_name='Sheet2')

You can set the date format or datetime format:

>>> with ExcelWriter('path_to_file.xlsx',
                      datetime_format='YYYY-MM-DD HH:MM:SS') as writer:
...     df.to_excel(writer)

You can also append to an existing Excel file:

>>> with ExcelWriter('path_to_file.xlsx', mode='a') as writer:
...     df.to_excel(writer, sheet_name='Sheet3')




Scroll To Top