4

I want to fill in some pandas data frames into an existing excel file. I followed the instructions in: How to write to an existing excel file without overwriting data (using pandas)? using:

  from openpyxl import load_workbook
  import pandas as pd
  import numpy as np

  book=load_workbook("excel_proc.xlsx")
  writer=pd.ExcelWriter("excel_proc.xlsx", engine="openpyxl")
  writer.book = book
  writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
  data_df.to_excel(writer, sheet_name="example", startrow=100, startcol=5, index=False)
  writer.save()

However, the existing sheets will be deleted, the "example" sheet is generated and only the df is integrated at the defined location. What did I do wrong? I want the "data_df" written into the existing excel file in the existing "example" sheet, keeping the other sheets and data.

Thanks

Example df:

data_df=pd.DataFrame(np.arange(12).reshape((2, 6)), index=["Time","Value"])
Community
  • 1
  • 1
Rockbar
  • 1,081
  • 1
  • 20
  • 31

2 Answers2

3

I resolved the problem on my own. I realised that even load_workbook cannot load my file. Therefore, I updated the openpyxl package (conda install openpyxl). The version not working was : v2.3.2 (python 35). The version now working is: v2.4.0.

I do not really know, if it was the reason at the end. But now the excels are filled in the defined locations and the data is kept.

Rockbar
  • 1,081
  • 1
  • 20
  • 31
1

You might be interested in learning xlwings, which makes it a lot easier to work with excel files from python.

In any case I would start by reading the existing data in the sheet, combine the data as you wish in python, and finally overwrite the sheet.

Martin Bonde
  • 536
  • 3
  • 11