pandas.ExcelWriter #

熊猫类 ExcelWriter (路径,引擎=, date_format = None , datetime_format = None , mode = 'w' , storage_options = None , if_sheet_exists = None , engine_kwargs = None ) [来源] #

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

默认是使用:

DataFrame.to_excel参阅典型用法。

作者应该被用作上下文管理器。否则,调用close()保存并关闭所有打开的文件句柄。

参数
路径str 或打字.BinaryIO

xls 或 xlsx 或 ods 文件的路径。

发动机强度(可选)

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

date_format str,默认无

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

datetime_format str,默认无

写入 Excel 文件的日期时间对象的格式字符串。 (例如“YYYY-MM-DD HH:MM:SS”)。

模式{'w', 'a'}, 默认 'w'

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

storage_options字典,可选

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

if_sheet_exists {'error', 'new', 'replace', 'overlay'}, 默认 'error'

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

  • 错误:引发 ValueError。

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

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

  • 覆盖:将内容写入现有工作表,而不首先删除现有内容,但可能会覆盖现有内容。

1.3.0 版本中的新增功能。

版本 1.4.0 中更改:添加了overlay选项

engine_kwargs字典,可选

要传递到引擎中的关键字参数。这些将被传递到各个引擎的以下功能:

  • xlsx作者:xlsxwriter.Workbook(file, **engine_kwargs)

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

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

  • ods编写者:odf.opendocument.OpenDocumentSpreadsheet(**engine_kwargs)

1.3.0 版本中的新增功能。

笔记

为了与 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

书籍实例。

date_format

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

datetime_format

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

engine

发动机名称。

if_sheet_exists

写入已处于追加模式的工作表时的行为方式。

sheets

将工作表名称映射到工作表对象。

supported_extensions

编写器引擎支持的扩展。

方法

check_extension(分机)

根据 Writer 支持的扩展名检查该路径的扩展名。

close()

保存的同义词,使其更像文件