我有以下代码,我正在尝试将数据框写入 Excel 文件的“现有”工作表(此处称为 test.xlsx)。 Sheet3 是我要放置数据的目标工作表,我不想用新工作表替换整个工作表。
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
book = load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets) # *I am not sure what is happening in this line*
df.to_excel(writer,"Sheet3",startcol=0, startrow=20)
当我逐行运行代码时,最后一行出现此错误:AttributeError: 'Workbook' 对象没有属性 'add_worksheet'。现在为什么当我不尝试添加工作表时会看到此错误?
注意:我知道这个类似的问题 Python How to use ExcelWriter to write into an existing worksheet 但它对我不起作用,我也无法评论该帖子。
最佳答案
您可以使用 append_df_to_excel()
辅助函数,即 defined in this answer :
用法:
append_df_to_excel('test.xlsx', df, sheet_name="Sheet3", startcol=0, startrow=20)
一些细节:**to_excel_kwargs
- 用于将额外的名为 的 参数传递给 df.to_excel()
,就像我在上面的示例中所做的那样 - startcol
参数不知道 append_df_to_excel()
,因此它将被视为 **to_excel_kwargs
参数(字典)的一部分。writer.sheets = {ws.title:ws for ws in writer.book.worksheets}
用于将现有工作表复制到 writer
openpyxl 对象。我无法解释为什么在阅读 writer = pd.ExcelWriter(filename, engine='openpyxl')
时它没有自动完成 - 你应该向 openpyxl
模块的作者询问这个......关于excel - 获取 AttributeError 'Workbook' 对象没有属性 'add_worksheet' - 在将数据框写入 Excel 工作表时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49519696/