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)[源代码][源代码]#
用于将 DataFrame 对象写入 excel 表格的类。
默认使用:
如果安装了 xlsxwriter,则使用 xlsxwriter 处理 xlsx 文件,否则使用 openpyxl
odf 用于 ods 文件
请参阅
DataFrame.to_excel()
以获取典型用法。写入器应作为上下文管理器使用。否则,调用 close() 以保存并关闭任何已打开的文件句柄。
- 参数:
- 路径str 或 typing.BinaryIO
指向 xls 或 xlsx 或 ods 文件的路径。
- 引擎str (可选)
用于编写的引擎。如果为 None,则默认为
io.excel.<extension>.writer
。注意:只能作为关键字参数传递。- date_formatstr, 默认为 None
写入Excel文件的日期格式字符串(例如 ‘YYYY-MM-DD’)。
- datetime_formatstr, 默认为 None
写入Excel文件的datetime对象的格式字符串。(例如 ‘YYYY-MM-DD HH:MM:SS’)。
- 模式{‘w’, ‘a’}, 默认 ‘w’
使用的文件模式(写入或追加)。追加模式不适用于 fsspec URL。
- storage_optionsdict, 可选
特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于HTTP(S) URL,键值对被转发到
urllib.request.Request
作为头部选项。对于其他URL(例如以“s3://”和“gcs://”开头),键值对被转发到fsspec.open
。请参阅fsspec
和urllib
了解更多详情,有关存储选项的更多示例请参考 这里。- if_sheet_exists{‘error’, ‘new’, ‘replace’, ‘overlay’},默认 ‘error’
在尝试写入已经存在的表格时如何表现(仅限追加模式)。
错误:引发一个 ValueError。
new: 创建一个新表单,名称由引擎决定。
replace: 在写入之前删除工作表的内容。
overlay: 将内容写入现有工作表,而不首先删除,但可能覆盖现有内容。
Added in version 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:
odf.opendocument.OpenDocumentSpreadsheet(**engine_kwargs)
Added in version 1.3.0.
参见
read_excel
将 Excel 表格值 (xlsx) 文件读取到 DataFrame 中。
read_csv
将逗号分隔值(csv)文件读取到 DataFrame 中。
read_fwf
将固定宽度格式化的行读取到 DataFrame 中。
注释
为了与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 pd.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 pd.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 文件:
>>> 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')。
引擎
引擎的名称。
if_sheet_exists
在追加模式下写入已存在的表格时的行为方式。
工作表
工作表名称到工作表对象的映射。
supported_extensions
写入引擎支持的扩展。
方法
check_extension
(ext)检查路径的扩展名是否与写入器支持的扩展名匹配。
关闭
()同义词为保存,使其更像文件