Sortieren und filtern in openpyxl

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
Ivo
User
Beiträge: 2
Registriert: Donnerstag 20. Mai 2021, 20:08

Ich möchte einen Worksheet, den ich in openpyxl erstellt habe, nach verschiedenen Kriterien sortieren und filtern - in pandas geht das einfach mit worksheet = worksheet.sort_values(by=['Mitarbeiter', 'Datum', 'Patient', 'SchichtStatus'])?
1. gibt es ähnliche Funktionalitäten in openpyxl?
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Hallo Ivo,

Das geht.
Ich denke das ist was du suchst:
https://openpyxl.readthedocs.io/en/stable/filters.html
Ivo
User
Beiträge: 2
Registriert: Donnerstag 20. Mai 2021, 20:08

Hallo regerb,
vielen Dank für Deine Rückmeldung. Dieses Programm sortiert nichts in Python sondern baut in Excel eine Filterfunktion ein, d.h. man kann in dem abgespeicherten Excel-Sheet direkt in die Filterfunktion in den Spalten einsteigen. Auf der Seite steht auch:
'This will add the relevant instructions to the file but will neither actually filter nor sort.' Von daher hilft das nicht wirklich weiter, die Filterung und Sortierung muss dann in Excel geschehen.
Im xlsw-Modul kann aber in Python selber die Daten sortieren und sie dann weiterverarbeiten - das habe ich in openpyxl noch nicht gefunden.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

openpyxl ist ja auch nicht für die Datenverarbeitung gedacht. Dafür benutzt man dann sowas wie pandas, wie Du ja schon geschrieben hast.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Hallo Ivo,

wie Sirius schon sagt, ist es am effizientesten die Daten vor dem schreiben in die Excel-Tabelle zu sortieren.
Falls du die Daten aus irgendeinem Grund später wieder sortieren willst, kannst du sie mit openpyxl wieder aus der Tabelle auslesen, in Python sortieren und zurückschreiben.

Und wenn du unbedingt mit Python in der Excel-Tabelle sortieren willst, musst du jede einzelne Zelle auslesen, mit den anderen vergleiche und den Wert an die richtige Stelle schreiben... Aber ich komme mir schon blöd vor das überhaupt zu erwähnen.

Was noch ginge: Ich denke Excel hat eine Sort-Funktion. Die kannst du natürlich auch verwenden. Aber dann sortiert Python wieder nicht, sondern Excel.
Antworten