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)[源代码]#

用于将DataFrame对象写入Excel工作表的类。

默认情况下使用: 用于XLS的xlwt 用于xlsx的xlsxWriter(如果安装了xlsxWriter),否则为用于ods的Openpyxl*odf。有关典型用法,请参阅DataFrame.to_Excel。

作者应该被用作上下文管理者。否则,请致电 close() 保存和关闭任何打开的文件句柄。

参数
path字符串或键入.BinaryIO

Xls或xlsx或ods文件的路径。

engine字符串(可选)

用于写入的引擎。如果没有,则默认为 io.excel.<extension>.writer 。注意:只能作为关键字参数传递。

1.2.0 版后已移除: 作为 xlwt 不再维护包,则 xlwt 未来版本的Pandas将不再使用发动机。

date_format字符串,默认为无

写入Excel文件的日期的格式字符串(例如‘YYYY-MM-DD’)。

datetime_format字符串,默认为无

写入Excel文件的DateTime对象的格式字符串。(例如:‘YYYY-MM-DD HH:MM:SS’)。

mode{‘w’,‘a’},默认‘w’

要使用的文件模式(写入或追加)。追加不适用于fsspec URL。

storage_optionsDICT,可选

对特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于HTTP(S)URL,键-值对被转发到 urllib.request.Request 作为标题选项。对于其他URL(例如,以“s3://”和“gcs://”开头),键-值对被转发到 fsspec.open 。请看 fsspecurllib 有关更多详细信息和有关存储选项的更多示例,请参阅 here

1.2.0 新版功能.

if_sheet_exists{‘Error’,‘new’,‘Replace’,‘Overlay’},默认‘Error’

尝试写入已存在的工作表时的行为方式(仅限追加模式)。

  • 错误:引发ValueError。

  • 新建:创建一个新工作表,其名称由引擎确定。

  • 替换:在写入之前删除工作表的内容。

  • 覆盖:在不删除旧内容的情况下将内容写入现有工作表。

1.3.0 新版功能.

在 1.4.0 版更改: 已添加 overlay 选项

engine_kwargsDICT,可选

要传递到引擎的关键字参数。这些将传递给相应引擎的以下功能:

  • XlsxWriter: xlsxwriter.Workbook(file, **engine_kwargs)

  • OpenPYXL(写入模式): openpyxl.Workbook(**engine_kwargs)

  • OpenPYXL(追加模式): openpyxl.load_workbook(file, **engine_kwargs)

  • 奇特写手: odf.opendocument.OpenDocumentSpreadsheet(**engine_kwargs)

1.3.0 新版功能.

**kwargsDICT,可选

要传递到引擎的关键字参数。

1.3.0 版后已移除: 改用ENGINE_KWARGS。

注意事项

为了与CSV编写器兼容,ExcelWriter在写入之前将列表和字典序列化为字符串。

示例

默认用法:

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

要写入单个文件中的单独工作表,请执行以下操作:

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
...     df1.to_excel(writer, sheet_name="Sheet1")  
...     df2.to_excel(writer, sheet_name="Sheet2")  

您可以设置日期格式或日期时间格式:

>>> 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 pd.ExcelWriter(
...     "path_to_file.xlsx",
...     date_format="YYYY-MM-DD",
...     datetime_format="YYYY-MM-DD HH:MM:SS"
... ) as writer:
...     df.to_excel(writer)  

您还可以附加到现有的Excel文件:

>>> with pd.ExcelWriter("path_to_file.xlsx", mode="a", engine="openpyxl") as writer:
...     df.to_excel(writer, sheet_name="Sheet3")  

在这里, if_sheet_exists 参数可以设置为替换已存在的工作表:

>>> with ExcelWriter(
...     "path_to_file.xlsx",
...     mode="a",
...     engine="openpyxl",
...     if_sheet_exists="replace",
... ) as writer:
...     df.to_excel(writer, sheet_name="Sheet1")  

您还可以将多个DataFrame写入单个工作表。请注意, if_sheet_exists 参数需要设置为 overlay

>>> with ExcelWriter("path_to_file.xlsx",
...     mode="a",
...     engine="openpyxl",
...     if_sheet_exists="overlay",
... ) as writer:
...     df1.to_excel(writer, sheet_name="Sheet1")
...     df2.to_excel(writer, sheet_name="Sheet1", startcol=3)  

您可以将Excel文件存储在RAM中:

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

您可以将Excel文件打包为Zip存档:

>>> 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)  

您可以为基础引擎指定其他参数:

>>> with pd.ExcelWriter(
...     "path_to_file.xlsx",
...     engine="xlsxwriter",
...     engine_kwargs={"options": {"nan_inf_to_errors": True}}
... ) as writer:
...     df.to_excel(writer)  

在追加模式中, engine_kwargs 传递到OpenPYXL的 load_workbook

>>> with pd.ExcelWriter(
...     "path_to_file.xlsx",
...     engine="openpyxl",
...     mode="a",
...     engine_kwargs={"keep_vba": True}
... ) as writer:
...     df.to_excel(writer, sheet_name="Sheet2")  

属性

book 

图书实例。

cur_sheet 

(不推荐使用)当前用于书写的工作表。

date_format 

写入Excel文件的日期的格式字符串(例如

datetime_format 

写入Excel文件的日期的格式字符串(例如

engine 

发动机名称。

handles 

Excel工作表的句柄(已弃用)。

if_sheet_exists 

如何在写入已存在于追加模式下的工作表时的行为。

path 

Excel文件的路径。

sheets 

将图纸名称映射到图纸对象。

supported_extensions 

编写器引擎支持的扩展。

方法:

check_extension \(分机)

对照编写器支持的扩展名检查该路径的扩展名。

close \()

SAVE的同义词,使其更像文件

save \()

(已弃用)将工作簿保存到磁盘。

write_cells \(单元格 [, sheet_name, startrow, ...] )

(已弃用)将给定格式的单元格写入Excel中的Excel表格