Python in LibreOffice Calc – Zellwerte prüfen und auswerten
In diesem Beispielskript zeige ich, wie man LibreOffice Calc mit Python sinnvoll automatisieren kann.
Das Skript liest den Inhalt einer ausgewählten Zelle aus, wertet diesen aus und schreibt das Ergebnis automatisch in die Zelle rechts daneben.
Dabei wird geprüft, ob die Zelle leer ist, ob sie einen numerischen Wert enthält und in welchem Wertebereich sich dieser befindet.
Das Beispiel ist bewusst einfach gehalten, zeigt aber sehr gut die grundlegenden Konzepte der Arbeit mit der UNO-API, wie den Zugriff auf Zellen, Zellbereiche und den sicheren Umgang mit Benutzereingaben.
Das Skript eignet sich sowohl als Lernbeispiel für den Einstieg in Python-Makros für LibreOffice Calc als auch als Grundlage für eigene Automatisierungen und Erweiterungen.
⬇️ Den vollständigen Code kannst du weiter unten über den Downloadlink herunterladen.
Hinweis: Die gezeigten Code-Beispiele dienen Lernzwecken. Änderungen und Einsatz erfolgen auf eigene Verantwortung – bitte teste alles vorab in einer Kopie deiner Dateien.
🔹 Wo müssen Python-Skripte in LibreOffice liegen?
LibreOffice bringt Python bereits mit – du musst also kein eigenes Python installieren, um Makros nutzen zu können.
Damit LibreOffice dein Skript erkennt, muss es jedoch im richtigen Benutzerverzeichnis liegen.
📁 Pfade für Python-Makros (Benutzerprofil)
Windows
🐧 Linux
🍎 macOS
Hinweis:
Ersetze<DEIN_USERNAME>entsprechend durch deinen tatsächlichen Benutzernamen.
🔹 Wichtiger Hinweis: Ordner ggf. selbst anlegen
Gerade bei einer frischen LibreOffice-Installation ist es völlig normal, dass die OrdnerScripts und python noch nicht existieren.
👉 In diesem Fall kannst (und sollst) du sie einfach selbst anlegen:
-
Groß- und Kleinschreibung beachten (
Scripts, nichtscripts) -
LibreOffice nach dem Anlegen der Ordner neu starten
LibreOffice erkennt die Ordner automatisch beim nächsten Start.
🔹 Wie wird das Skript ausgeführt?
Sobald dein Python-Skript im richtigen Ordner liegt und LibreOffice neu gestartet wurde, findest du es unter:
Dort wird deine .py-Datei als Ordner angezeigt, und darunter die enthaltene Makro-Funktion, die du ausführen kannst.
🔹 Code – Schritt für Schritt erklärt
Hier importieren wir das uno-Modul.
Dieses Modul ist die Grundlage für die Kommunikation zwischen Python und LibreOffice und ermöglicht uns den Zugriff auf Dokumente, Zellen und andere Calc-Objekte.
Hier definieren wir eine Funktion mit dem Namen evaluate_value.
Sie bekommt einen Text übergeben, der später den Inhalt einer Zelle repräsentiert, und wertet diesen Inhalt aus.
In dieser Zeile entfernen wir führende und nachfolgende Leerzeichen aus dem Zellinhalt.
Das ist wichtig, damit versehentliche Leerzeichen nicht zu falschen Auswertungen führen.
Hier prüfen wir, ob der bereinigte Zellinhalt komplett leer ist.
Wenn die Zelle leer ist, beenden wir die Funktion sofort und geben den Text
„Die Zelle ist leer“ zurück.
Ab hier beginnen wir einen try-Block.
Damit stellen wir sicher, dass unser Programm nicht abstürzt, falls der Zellinhalt kein gültiger Zahlenwert ist.
In dieser Zeile ersetzen wir ein mögliches Komma durch einen Punkt und versuchen anschließend, den Text in eine Fließkommazahl umzuwandeln.
So funktionieren sowohl deutsche als auch englische Zahlenformate.
Jetzt prüfen wir, ob der numerische Wert kleiner als 10 ist.
Wenn der Wert kleiner als 10 ist, geben wir diesen Text als Ergebnis zurück.
Hier prüfen wir, ob der Wert zwischen 10 und 100 liegt, inklusive der Grenzwerte.
Wenn diese Bedingung erfüllt ist, geben wir entsprechend diesen Text zurück.
Dieser Block wird ausgeführt, wenn der Wert größer als 100 ist.
In diesem Fall liefern wir den Text „Wert größer 100“ zurück.
Dieser except-Block greift, wenn die Umwandlung in eine Zahl nicht möglich war.
Wenn der Zellinhalt keine Zahl ist, geben wir diesen Text zurück.
Hier definieren wir die Hauptfunktion des Skripts.
Sie wird später direkt aus LibreOffice heraus aufgerufen.
Diese Zeile holt sich das aktuell geöffnete LibreOffice-Dokument, also unsere Calc-Datei.
XSCRIPTCONTEXT ist die Schnittstelle (das Interface) zwischen deinem Python-Skript und der LibreOffice-Anwendung. Es ist ein vordefiniertes Objekt, das LibreOffice automatisch zur Verfügung stellt, sobald du ein Python-Skript über das Menü „Makros“ ausführst.
Hier lesen wir die aktuell ausgewählte Zelle oder den ausgewählten Zellbereich aus.
Jetzt prüfen wir, ob es sich bei der Auswahl um einen Zellbereich handelt.
Falls ein Bereich markiert ist, nehmen wir nur die erste Zelle (Zelle oben links von der Auswahl) dieses Bereichs.
Hier stellen wir sicher, dass tatsächlich eine einzelne Zelle ausgewählt ist.
Falls keine gültige Zelle ausgewählt ist, wird die Funktion einfach beendet.
Jetzt lesen wir den Textinhalt der ausgewählten Zelle aus.
Der Zellinhalt wird nun an unsere vorher definierte Auswertungsfunktion übergeben, und das Ergebnis wird gespeichert.
Hier holen wir uns die genaue Position der Zelle – also Zeile und Spalte.
Diese Zeile gibt uns Zugriff auf das Tabellenblatt, auf dem sich die Zelle befindet.
Wir berechnen die Zielspalte, indem wir eine Spalte nach rechts gehen.
Die Zeile bleibt gleich, da wir nur nach rechts schreiben wollen.
Hier prüfen wir, ob wir uns bereits in der letzten Spalte befinden.
Wenn keine Spalte mehr rechts existiert, wird die Funktion beendet.
Jetzt greifen wir auf die Zielzelle rechts neben der ursprünglichen Zelle zu.
In dieser Zeile schreiben wir das berechnete Ergebnis in die Zielzelle.
Zum Schluss registrieren wir unsere Funktion, damit LibreOffice sie als Makro erkennen und ausführen kann.
Hier habt Ihr den Code noch als Downloaddatei:
Download Python Script für: Zellinhalt auswerten für LibreOffice Calc mit Python
Vergesst bitte nicht ein Like auf YouTube dazulassen, wenn Ihr meinen Content nützlich findet 🙂

