# pandas.ExcelWriter

class pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None, **kwargs)

  Class for writing DataFrame objects into excel sheets.

  Default is to use xlwt for xls, openpyxl for xlsx, odf for ods. See DataFrame.to_excel for typical usage.

  The writer should be used as a context manager. Otherwise, call close() to save and close any opened file handles.

  Parameters
    path str or typing.BinaryIO

      Path to xls or xlsx or ods file.

    engine str (optional)

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

      Deprecated since version 1.2.0: As the xlwt package is no longer maintained, the `xlwt` engine will be removed in a future version of pandas.

    date_format str, default None

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

    datetime_format str, 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). Append does not work with fsspec URLs.

    storage_options dict, optional

      Extra options that make sense for a particular storage connection, e.g. host, port, username, password, etc., if using a URL that will be parsed by `fsspec`, e.g., starting “s3://”, “gcs://”.

      New in version 1.2.0.

    if_sheet_exists{‘error’, ‘new’, ‘replace’}, default ‘error’

      How to behave when trying to write to a sheet that already exists (append mode only).

      - error: raise a ValueError.

      - new: Create a new sheet, with a name determined by the engine.

      - replace: Delete the contents of the sheet before writing to it.

      New in version 1.3.0.

    engine_kwargs dict, optional

      Keyword arguments to be passed into the engine.

      New in version 1.3.0.

    **kwargs dict, optional

      Keyword arguments to be passed into the engine.

      Deprecated since version 1.3.0: Use engine_kwargs instead.

  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:

      >>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
      >>> with ExcelWriter("path_to_file.xlsx") as writer:
      ...     df.to_excel(writer)

  To write to separate sheets in a single file:

      >>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])
      >>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
      >>> 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:

      >>> from datetime import date, datetime
      >>> df = pd.DataFrame(
      ...     [
      ...         [date(2014, 1, 31), date(1999, 9, 24)],
      ...         [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
      ...     ],
      ...     index=["Date", "Datetime"],
      ...     columns=["X", "Y"],
      ... )
      >>> with ExcelWriter(
      ...     "path_to_file.xlsx",
      ...     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", engine="openpyxl") as writer:
      ...     df.to_excel(writer, sheet_name="Sheet3")

  You can store Excel file in RAM:

      >>> import io
      >>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
      >>> buffer = io.BytesIO()
      >>> with pd.ExcelWriter(buffer) as writer:
      ...     df.to_excel(writer)

  You can pack Excel file into zip archive:

      >>> import zipfile
      >>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
      >>> with zipfile.ZipFile("path_to_file.zip", "w") as zf:
      ...     with zf.open("filename.xlsx", "w") as buffer:
      ...         with pd.ExcelWriter(buffer) as writer:
      ...             df.to_excel(writer)

  Attributes

  None |

  Methods

  None |