我目前有一个excel文件,最简单可行的例子,说3张。我想更改其中2张表来基于来自2个pandas数据帧的新值(每张表1个数据帧)。
这是我目前的代码:
from openpyxl.writer.excel import ExcelWriter
from openpyxl import load_workbook
path = r"Libraries\Documents\Current_Standings.xlsx"
book = load_workbook('Current_Standings.xlsx')
writer = pd.ExcelWriter(path, 'Current_Standings.xlsx',
engine='openpyxl')
writer.book = writer
Blank_Propensity_Scores.to_excel(writer, sheet_name =
'Blank_Propensity.xlsx')
Leads_by_Rep.to_excel(writer,sheet_name = 'Leads_by_Rep.xlsx')
writer.save()
当我运行这个时,我得到以下错误消息,不知道为什么,因为我看过的每个堆栈溢出答案只有1项openpyxl:
TypeError: __new__() got multiple values for argument 'engine'
我也尝试过摆脱引擎=' openpyxl'参数,但当我这样做时,我得到以下错误信息:
ValueError: No Excel writer 'Current_Standings.xlsx'
答案 0 :(得分:1)
如果在Python命令行上执行命令' help(pd.ExcelWriter)'您将在第一行看到参数:
class ExcelWriter(builtins.object)
| Class for writing DataFrame objects into excel sheets, default is to use
| xlwt for xls, openpyxl for xlsx. See DataFrame.to_excel for typical usage.
|
| Parameters
| ----------
| path : string
| Path to xls or xlsx file.
| engine : string (optional)
| Engine to use for writing. If None, defaults to
| ``io.excel.<extension>.writer``. NOTE: can only be passed as a keyword
| argument.
| date_format : string, default None
| Format string for dates written into Excel files (e.g. 'YYYY-MM-DD')
| datetime_format : string, default None
| Format string for datetime objects written into Excel files
| (e.g. 'YYYY-MM-DD HH:MM:SS')
|
换句话说,第二个参数依次是引擎。因此,如果您放置一个没有任何爆炸的字符串,它将被视为引擎(尽管关于仅将此参数作为关键字传递的帮助中的注释,似乎这是行为)。如果您再次输入engine =&#39; openpyxl&#39;,那么您正在定义参数&#39; engine&#39;两次。
这是错误的原因
TypeError: __new__() got multiple values for argument 'engine'
总之,您应该只使用两个参数调用ExcelWriter。第一个是Excel文件的路径(变量&#39;路径&#39;,我猜)和引擎。