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
。请看fsspec
和urllib
有关更多详细信息和有关存储选项的更多示例,请参阅 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")
属性
图书实例。
(不推荐使用)当前用于书写的工作表。
写入Excel文件的日期的格式字符串(例如
写入Excel文件的日期的格式字符串(例如
发动机名称。
Excel工作表的句柄(已弃用)。
如何在写入已存在于追加模式下的工作表时的行为。
Excel文件的路径。
将图纸名称映射到图纸对象。
编写器引擎支持的扩展。
方法:
check_extension
\(分机)对照编写器支持的扩展名检查该路径的扩展名。
close
\()SAVE的同义词,使其更像文件
save
\()(已弃用)将工作簿保存到磁盘。
write_cells
\(单元格 [, sheet_name, startrow, ...] )(已弃用)将给定格式的单元格写入Excel中的Excel表格