Записване на рамка с данни в лист на Excel с openpyxl

Опитвам се да напиша рамка от данни, която имам, в лист на Excel. Това е нещо, което съм правил много пъти по няколко начина и не мога да разбера къде е грешката ми в момента.

Пандите 23.4

Моят код:

#initialize stuff
book = load_workbook(os.path.commonpath(output))
writer = pd.ExcelWriter(os.path.commonpath(output), engine = 'openpyxl')
writer.book = book

#Check for sheet in my excel book, if not there create it
if not 'CHECK' in book.sheetnames:
    book.create_sheet('CHECK')

#Remove default excel sheets if present, and save changes to sheet
try:
    book.remove_sheet(book['Sheet1'])   
except:
    pass
book.save(os.path.commonpath(output))


#THIS LINE WAS MISSING, CAUSING THE ERROR!
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)



#write it all out at the first blank row in the excel sheet
df.to_excel(writer, sheet_name = 'CHECK', startrow = writer.sheets['CHECK'].max_row, index=False)

По някаква причина получавам следната грешка: KeyError: 'CHECK'

Бях си почесал главата за това, защото съм използвал почти точно този код преди и той работи добре.


person MaxB    schedule 08.07.2019    source източник


Отговори (2)


Трябва да се промениш

df.to_excel(writer, sheet_name = 'CHECK', startrow = writer.sheets['CHECK'].max_row, index=False)

To:

df.to_excel(output, sheet_name = 'CHECK', startrow = book['CHECK'].max_row, index=False)
person Yohanna Lisnichuk    schedule 08.07.2019
comment
Това за съжаление все още дава същото KeyError - person MaxB; 09.07.2019

Точно преди df.to_excel(output, sheet_name = 'CHECK', startrow = book['CHECK'].max_row, index=False) липсва критичен ред от моя страна!!

writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

^ е извършителят, който липсва, оригиналният въпрос ще бъде актуализиран.

person MaxB    schedule 09.07.2019