Table Of Contents


Enter search terms or a module, class or function name.


Series.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True)[source]

Write Series to an excel sheet.

To write a single Series to an excel .xlsx file it is only necessary to specify a target file name. To write to multiple sheets it is necessary to create an ExcelWriter object with a target file name, and specify a sheet in the file to write to. Multiple sheets may be written to by specifying unique sheet_name. With all data written to the file it is necessary to save the changes. Note that creating an ExcelWriter object with a file name that already exists will result in the contents of the existing file being erased.


excel_writer : string or ExcelWriter object

File path or existing ExcelWriter.

sheet_name : string, default ‘Sheet1’

Name of sheet which will contain DataFrame.

na_rep : string, default ‘’

Missing data representation.

float_format : string, optional

Format string for floating point numbers. For example float_format="%.2f" will format 0.1234 to 0.12.

columns : sequence or list of string, optional

Columns to write.

header : boolean or list of string, default True

Write out the column names. If a list of strings is given it is assumed to be aliases for the column names.

index : boolean, default True

Write row names (index).

index_label : string or sequence, optional

Column label for index column(s) if desired. If not specified, and header and index are True, then the index names are used. A sequence should be given if the DataFrame uses MultiIndex.

startrow : integer, default 0

Upper left cell row to dump data frame.

startcol : integer, default 0

Upper left cell column to dump data frame.

engine : string, optional

Write engine to use, ‘openpyxl’ or ‘xlsxwriter’. You can also set this via the options io.excel.xlsx.writer, io.excel.xls.writer, and io.excel.xlsm.writer.

merge_cells : boolean, default True

Write MultiIndex and Hierarchical Rows as merged cells.

encoding : string, optional

Encoding of the resulting excel file. Only necessary for xlwt, other writers support unicode natively.

inf_rep : string, default ‘inf’

Representation for infinity (there is no native representation for infinity in Excel).

verbose : boolean, default True

Display more information in the error logs.

freeze_panes : tuple of integer (length 2), optional

Specifies the one-based bottommost row and rightmost column that is to be frozen.

New in version 0.20.0..

See also

pandas.read_excel, pandas.ExcelWriter


For compatibility with to_csv(), to_excel serializes lists and dicts to strings before writing.

Once a workbook has been saved it is not possible write further data without rewriting the whole workbook.


Create, write to and save a workbook:

>>> df1 = pd.DataFrame([['a', 'b'], ['c', 'd']],
...                   index=['row 1', 'row 2'],
...                   columns=['col 1', 'col 2'])
>>> df1.to_excel("output.xlsx")

To specify the sheet name:

>>> df1.to_excel("output.xlsx", sheet_name='Sheet_name_1')

If you wish to write to more than one sheet in the workbook, it is necessary to specify an ExcelWriter object:

>>> writer = pd.ExcelWriter('output2.xlsx', engine='xlsxwriter')
>>> df1.to_excel(writer, sheet_name='Sheet1')
>>> df2 = df1.copy()
>>> df2.to_excel(writer, sheet_name='Sheet2')
Scroll To Top