我正在运行一些基本的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'
然而,现在(正如预期的那样)它替换了整个工作表,并破坏了以前应用的格式。然而,当在我的机器上运行时,它不会替换工作表,即使编写器被设置为这样做。
我不完全知道在哪里可以找到机器的不同之处,所以如果有人能给我一个主意,我将非常感谢。
1条答案
按热度按时间1szpjjfi1#
最后一个Pandas版本是1.2.5.
pip uninstall pandas
版本,然后是pip install pandas==1.2.5
版本,它会简单地将数据附加到以前格式化的Excel模板中。YMMV公司。
编辑:
我相信问题出在
openpyxl
上,如果上面的解决方案不可行,你可以单独恢复。如果if_sheet_exists = 'overlay'
适合你的需要,你也可以试试。