Skip to content

DOC: Expose ExcelWriter as part of the Generated API #22359

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Sep 18, 2018
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