Seite 1 von 1

python Dokumentwiederherstellung

Verfasst: Mi 18. Feb 2026, 18:17
von gerderich
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

Re: python Dokumentwiederherstellung

Verfasst: Do 19. Feb 2026, 00:57
von karolus
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()

Re: python Dokumentwiederherstellung

Verfasst: Do 19. Feb 2026, 11:36
von gerderich
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

Re: python Dokumentwiederherstellung

Verfasst: Do 19. Feb 2026, 12:44
von karolus
1. Möchtest du weiterhin unqualifizierte Behauptungen aufstellen?!
ODER
2. brauchst du strukturierte Hilfestellung?