Bestehende Excelliste erweitern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
gandy7
User
Beiträge: 3
Registriert: Dienstag 21. November 2023, 16:27

Hallo Zusammen,

ich möchte eine bestehende Excelliste erweitern.
Auch mein neuer bester Freund ChatGPT dreht sich hier ständig in der Schleife...
Bei der Zeile: writer.book = book fliege ich raus...

Hier mein Code:

Code: Alles auswählen

    def export_data(self):
        all_items = self.table.get_children()
        if not all_items:
            messagebox.showinfo("Export Fehler", "Die Tabelle ist leer. Es gibt keine Daten zum Exportieren.")
            return

        data_to_export = []
        for item in all_items:
            values = self.table.item(item, 'values')
            data_to_export.append(values)

        # Überprüfen Sie, ob die Datei vorhanden ist
        try:
            existing_data = pd.read_excel("trinkgeld.xlsx", sheet_name="Tabelle1")
        except pd.errors.EmptyDataError:
            existing_data = pd.DataFrame()

        # Füge neue Daten zu den vorhandenen Daten hinzu
        new_data = pd.DataFrame(data_to_export, columns=["Datum", "Mitarbeiter", "Bereich", "Anteil", "Trinkgeld"])

        # Speichere die aktualisierten Daten in der Excel-Datei
        with pd.ExcelWriter("trinkgeld.xlsx", engine="openpyxl", mode="a") as writer:
            try:
                # Lade die vorhandene Arbeitsmappe
                book = load_workbook("trinkgeld.xlsx")
                writer.book = book #################HIER FLIEGE ICH RAUS!
                print("Datei trinkgeld.xlsx vorhanden")
            except FileNotFoundError:
                # Wenn die Datei nicht vorhanden ist, erstelle eine neue Arbeitsmappe
                writer.book = load_workbook("trinkgeld.xlsx")
                print("Datei trinkgeld.xlsx nicht vorhanden, wird erstellt")
            writer.sheets = {ws.title: ws for ws in writer.book.worksheets}
            new_data.to_excel(writer, index=False, sheet_name="Tabelle1", header=not bool(existing_data), startrow=len(existing_data)+1)

        messagebox.showinfo("Export Erfolg", "Daten erfolgreich exportiert!")
Könnt Ihr mir weiterhelfen?

Vielen Dank
Gandy
Benutzeravatar
Dennis89
User
Beiträge: 1156
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ich würde mir einen anderen Freund suchen.
Dann würde ich mal nur eine Funktion schreiben, die deine Daten in eine Excel schreibt unabhängig von allem anderen. Und dann kann man eine GUI darum brauen.

'load_workbook' ist von 'openpyxl'? Die Trinkgelddatei machst du davor aber auch mit Pandas auf und was du dann machst ist für mich komisch. Da würde ich auch aussteigen.

Ich finde mit 'openpyxl' kann man ganz gut und verständlich in das Thema einsteigen:
https://openpyxl.readthedocs.io/en/latest/tutorial.html

Grüße
Dennis

Edit: Ganz übersehen, willkommen im Forum.
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Pandas ist bei dem hier gemachten sowieso überflüssig - Pandas ist zur Datenanalyse gemacht und gedacht, dass ist Python API-Aufsatz für Excel. openpyxl reicht.

Und die andere Frage ist, was xlsx überhaupt als Speicherformat genutzt wird. xlsx Dateien sind halt primär für Excel gedacht. Hier würde sich z.B. auch SQlite und eine einfache Datenbank anbieten.

Was heißt denn "hier flieg ich raus"? Das schöne bei Python ist ja, dass man i.d.R. eine ausführliche Fehlermeldung inkl. Stack Trace bekommt.

Gruß, noisefloor
Antworten