Skip to content
Merged
6 changes: 6 additions & 0 deletions doc/source/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ Excel
read_excel
ExcelFile.parse

.. autosummary::
:toctree: generated/
:template: autosummary/class_without_autosummary.rst

ExcelWriter

JSON
~~~~

Expand Down
16 changes: 11 additions & 5 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -1917,18 +1917,24 @@ def _repr_latex_(self):
... columns=['col 1', 'col 2'])
>>> df1.to_excel("output.xlsx")

If you want to set engine that can manipulate Excel,
pass keyword argument named engine. Actually
engine is automatically chosen by file extension:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion with some changed language:

To set the library that used to write the Excel file, you can pass the `engine` keyword (the default engine is automatically chosen depending on the file extension):


>>> df1.to_excel('output1.xlsx', engine='xlsxwriter')

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')
>>> writer.save()
>>> with pd.ExcelWriter('output.xlsx') as writer:
... df1.to_excel(writer, sheet_name='Sheet_name_1')
... df2.to_excel(writer, sheet_name='Sheet_name_2')


"""

def to_json(self, path_or_buf=None, orient=None, date_format=None,
Expand Down
37 changes: 37 additions & 0 deletions pandas/io/excel.py
Original file line number Diff line number Diff line change
Expand Up @@ -824,8 +824,45 @@ class ExcelWriter(object):

Notes
-----
None of the methods and properties are considered public.

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

Examples
--------
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 date format or datetime format:

>>> with ExcelWriter('path_to_file.xlsx',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am actually surprised that we allow date / date time formatting with ExcelWriter but don't have the same usage in to_excel - if you are up to it aligning that functionality would be ideal (separate change)

date_format='YYYY-MM-DD',
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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would add here a sheet name? (I think you typically want to add a new sheet to an existing file?)

Copy link
Contributor Author

@newinh newinh Aug 21, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems more natural to do that:)


.. versionadded:: 0.24.0
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this one can be removed


Attributes
----------
None

Methods
-------
None
"""
# Defining an ExcelWriter implementation (see abstract methods for more...)

Expand Down