pandas.Excelwrite(path, engine=None, date_format=None, datetime_format=None, mode=‘w’, storage_options=None, if_sheet_exists=None, engine_kwargs=None, **kwargs )
path: str, Excel文件路径
engine: str, 写入的引擎,常用的为‘openpyxl’, 我测试时Python是安装了openxl模块
date_format: str, 写入日期时可以自定义格式,比如:‘YYYY-MM-DD HH:MM:SS’
mode: str, 文件的读写模式,具体可以参照点击查看,
Starage_option: dict, 对特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等,如果使用将由 fsspec 解析的 URL,例 如,以“s3://”、“gcs://”开头。应该是用来连接服务器用的,不确定。
if_sheet_exixts: str, 当写入的sheet存在时,可以设置为‘error’, ‘new’, ‘replace’, ‘overlay’.
error: 如果sheet已经存在,则报错
new: 创建新的sheet,命名规则更根据使用的engine
replace: 删除原sheet的内容,重新写入, mode=‘a’
overlay: 在原有的内容后面追加,df.to_excel()可以通过startcol或者startrow指定追加的位置, mode=‘a’, **pandas为1.4才支持overlay **
engine_kwargs: 要传递到engine的关键字参数,传递给给engine的以下参数
xlsxwriter.Workbook(file, **engine_kwargs)
openpyxl.Workbook(**engine_kwargs)
openpyxl.load_workbook(file, **engine_kwargs)
odf.opendocument.OpenDocumentSpreadsheet(**engine_kwargs)
import pandas as pd
df1 = pd.DataFrame({'a': [1, 2, 3, 4, 5, 66666]})
df2 = pd.DataFrame({'b': [111, 222, 3333, 4333, 5555, 66666]})
df3 = pd.DataFrame({'b': [1, 22, 33, 43, 55, 66]})
# if_sheet_exists = replace 覆盖
with pd.ExcelWriter(path='./csv_files/demo.xlsx', mode='a', engine='openpyxl', if_sheet_exists='replace') as writer:
print(writer.sheets) # 返回元祖,key为sheet名字,value为sheet对象
df1.to_excel(excel_writer=writer, sheet_name='Sheet1') # 写入Sheet1方式为覆盖
writer.if_sheet_exists = 'overlay' # 写入Sheet2方式改为追加
df2.to_excel(excel_writer=writer, sheet_name='Sheet2', startrow=10)
writer.if_sheet_exists = 'new' # 写入Sheet3方式改为新建Sheet,如果表已经存在则会根据'openpyxl'的命名方式创建sheet
df3.to_excel(excel_writer=writer, sheet_name='Sheet3', startrow=10)