pandas 〈值错误:工作表已存在,并且if_sheet_exists在一台计算机上设置为'error'>,但在另一台计算机上未设置

ifmq2ha2  于 2022-12-28  发布在  其他
关注(0)|答案(1)|浏览(1207)

我正在运行一些基本的python代码,它生成一个名为df的panda DataFrame,然后使用panda ExcelWriter和openpyxl作为引擎将其写入一个预先格式化的Excel文件。

workbook = load_workbook('example.xlsx')
sheet = workbook['example_sheet']
writer = pd.ExcelWriter('example.xlsx', engine='openpyxl', mode='a')
writer.book = workbook
writer.sheets = {ws.title: ws for ws in writer.book.worksheets}

sheet.cell(row=8, column=5).value = some.value
df.to_excel(writer, sheet_name='example_sheet', index=False, header=False, startrow=10, startcol=5)

奇怪的是,当运行在我的机器上,它的工作完美,但在我同事的机器上,它抛出提到的错误:

File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\excel\_openpyxl.py", line 437, in write_cells f"Sheet '{sheet_name}' already exists and " ValueError: Sheet 'example_sheet' already exists and if_sheet_exists is set to 'error'.

我尝试过通过显式设置

if_sheet_exists = 'replace'

然而,现在(正如预期的那样)它替换了整个工作表,并破坏了以前应用的格式。然而,当在我的机器上运行时,它不会替换工作表,即使编写器被设置为这样做。
我不完全知道在哪里可以找到机器的不同之处,所以如果有人能给我一个主意,我将非常感谢。

1szpjjfi

1szpjjfi1#

最后一个Pandas版本是1.2.5. pip uninstall pandas版本,然后是pip install pandas==1.2.5版本,它会简单地将数据附加到以前格式化的Excel模板中。
YMMV公司。
编辑:
我相信问题出在openpyxl上,如果上面的解决方案不可行,你可以单独恢复。如果if_sheet_exists = 'overlay'适合你的需要,你也可以试试。

相关问题