🍀 Bitte helfen Sie mit, das LibreOffice Forum zu erhalten. 🍀

❤️ DANKE >> << DANKE ❤️

Unterstützen Sie noch heute unsere Spendenkampagne für 2026.
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

python Dokumentwiederherstellung

Alles zur Programmierung im LibreOffice.
Antworten
gerderich
Beiträge: 31
Registriert: Sa 17. Mai 2014, 16:59

python Dokumentwiederherstellung

Beitrag von gerderich » Mi 18. Feb 2026, 18:17

Moin zusammen,
mit python öffne ich ein definiertes calc file. Das funktioniert ausgezeichnet mit

Code: Alles auswählen

        args = (PropertyValue(Name='Hidden', Value=False),PropertyValue(Name="MacroExecutionMode",Value=1),)
	path="/home/gerd/Dokumente/Sudeck/python_test.ods"
        docurl = uno.systemPathToFileUrl(path)
        desktop = context.ServiceManager.createInstanceWithContext(
			"com.sun.star.frame.Desktop", context)
        document = desktop.loadComponentFromURL(docurl,"_default",0,args)
        print ("calc dokument ist geladen!")
Schleißen des Dokumtes, beenden von Libreoffice und beenden des Scriptes mache ich mit

Code: Alles auswählen

     spreadsheet.close(True)
     sys.exit()
Auch das funktioniert.
Wenn ich das Dokument jetzt wieder öffne, erscheint der LO Dialog "Dokumentwiederherstellung" . Das Dokument wird aber fehlerfrei geladen und dahinter angezeigt.
Wie kann ich das Anzeigen des Dialoges verhindern. Augenscheinlich ist das Dokument ja in Ordnung. Aber:
Öffne ich das Dokument manuell, wird auch der Dialog angezeigt, das Dokument aber nicht.
Wo kann ich den Fehler finden?
Gruß
Gerd Erich

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2670
Registriert: Fr 10. Dez 2010, 10:01

Re: python Dokumentwiederherstellung

Beitrag von karolus » Do 19. Feb 2026, 00:57

Hallo
Den »desktop« initialisiere ich gewöhnlich mit

Code: Alles auswählen

    desktop = XSCRIPTCONTEXT.getDesktop()
bevor du die Datei schliesst möchtest du doch speichern?!

Code: Alles auswählen

    doc.store()
    doc.close(True)
und du möchtest mit ziemlicher Sicherheit NICHT:

Code: Alles auswählen

    sys.exit()
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

gerderich
Beiträge: 31
Registriert: Sa 17. Mai 2014, 16:59

Re: python Dokumentwiederherstellung

Beitrag von gerderich » Do 19. Feb 2026, 11:36

Moin Karolus,
vielen Dank für Deine schnelle Reaktion.
karolus hat geschrieben:
Do 19. Feb 2026, 00:57
Den »desktop« initialisiere ich gewöhnlich mit

Code: Alles auswählen

    desktop = XSCRIPTCONTEXT.getDesktop()
Diesen Tipp kannte ich schon. Nutze ich nicht, weil ich damit regelmäßig einen Fehler provoziere. In diesem Fall:

Code: Alles auswählen

Calc File nicht gefunden: name 'XSCRIPTCONTEXT' is not defined
XSCRIPTCONTEXT verhindert den angesprochen Fehler nicht. Es wird mit der Code Zeile ein weiterer Fehler initiiert. Schade...
bevor du die Datei schliesst möchtest du doch speichern?!
Ja, möchte ich, aber zunächst soll ein definiertes CALC Dokument fehlerfrei zum Bearbeiten geöffnet, bearbeitet und dann wieder fehlerfrei geschlossen werden.
und du möchtest mit ziemlicher Sicherheit NICHT:

Code: Alles auswählen

    sys.exit()
Warum nicht? In jeder mit bekannten Python Doku wird die Frage nach: Wie beende ich ein Python Script mit eben : z.B. mit sys(exit) beantwortet. Unter anderem weil bei dieser Methode ein auswertbarer Fehler Code mitgeliefert wird.
Und natürlich muss ein Dokument ordentlich geschlossen werden. Was also ist an sys.exit() falsch? Okay, ich könnte vorher ein doc.close(True) machen. Hab ich gemacht, der Fehler bleibt. Wat nu?
Jedenfalss hilft ein

Code: Alles auswählen

spreadsheet.close(True)
# oder auch 
#doc.close(True)
auch nicht weiter.
Danke für Deine mit Sicherheit gut gemeinten Tipps. Da die nicht helfen, mache ich mit Sicherheit einen kleinen aber wichtigen Denkfehler.
Nebenbei: Wenn ich das File mit ein paar BASIC Zeilen öffne und schließe, funktioniert das Ganze fehlerfrei. Muss doch in PYTHON dann auch gehen. BASIC ist in diesem Fall keine Option.
Oder liegt es an der Libreoffice Version? Ich nutze:25.2.3.2 auf Debian Bookworm.
Gruß
Gerd Erich

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2670
Registriert: Fr 10. Dez 2010, 10:01

Re: python Dokumentwiederherstellung

Beitrag von karolus » Do 19. Feb 2026, 12:44

1. Möchtest du weiterhin unqualifizierte Behauptungen aufstellen?!
ODER
2. brauchst du strukturierte Hilfestellung?
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten