Seite 1 von 1

Openpyxl: Excel Sheets updaten anstatt overwriten

Verfasst: Freitag 13. November 2020, 20:02
von gerryontour
Hi,

ich habe eine kleine Funktion geschrieben, die mir in ein Excel-Sheet an jedem Tag ein Result speichern soll.
Im Hintergrund läuft der Crawler, der die Daten in die Funktion einspeist.

Eigentlich funktioniert das Ganze, bis auf die Sache mit dem Overwrite.
Jedes mal wird die Datei neu erstellt und nicht aktualisiert.

Kann mir jemand sagen, wie ich das als update löse, oder die alten Daten mit in das Dokument speise, so wie ich es mit dem ersten Sheet mache?

Code: Alles auswählen

def save_results(excel_urls,erg):
    currentdate = str(date.today()) + " lol"
    excel_file = openpyxl.load_workbook('Links2.xlsx')
    excel_sheet = excel_file['Sheet']
    book = Workbook()
    sheet = book.active
    sheet.column_dimensions['A'].width = 60
    sheet.column_dimensions['B'].width = 60
    for row in excel_sheet.values:
        sheet.append(row)
    book.create_sheet(currentdate)
    book[currentdate].column_dimensions['A'].width = 60
    book[currentdate].column_dimensions['B'].width = 60
    for keys,values in enumerate(excel_urls):
        y = values[0], str(erg[keys])
        print(y)
        book[currentdate].append(y)
    book.save('Links2.xlsx')
Danke im voraus!

Re: Openpyxl: Excel Sheets updaten anstatt overwriten

Verfasst: Samstag 14. November 2020, 22:33
von Bl3nder
Ich bin selber Anfänger aber Ich versuche es mal was meinst du mit genau die Datei wird neu erstellt ( meinst du damit du hast zum Beispiel deine Datei Links2 und anstatt im ersten sheet neu reinzuschreiben wird ein neues erzeugt? Ich hatte mal falls das dein Problem ist genau das gleiche es gab da nicht wirklich eine Lösung für Ich habe mal in einem Forum folgendes gelesen:

with pd.ExcelWriter(Pfad_Testdatei, engine="openpyxl",mode="a") as writer:
writer.sheets = {sheet.title: sheet for sheet in writer.book}

Ich glaube die manipulieren so etwas in der Biblithek ich weiß nicht ob dir das hilft aber vill findest du mit dem Code etwas das dir sonst hilft