🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Python Marco - File Dialog für Datei Export
Python Marco - File Dialog für Datei Export
Hallo LibreOffice Freunde,
ich probiere eine Pdf mit einem Makro zu exportieren und brauche einen File-Dialog. Ich habe bereits diesen gefunden: http://openoffice3.web.fc2.com/Python_M ... OOoGDlg14a.
Ist es auch möglich den Standard-File-Dialog in einem Makro aufzurufen um den Benutzer nicht unnötig zu verwirren?
Vielen Dank für eure Hilfe,
Christian
ich probiere eine Pdf mit einem Makro zu exportieren und brauche einen File-Dialog. Ich habe bereits diesen gefunden: http://openoffice3.web.fc2.com/Python_M ... OOoGDlg14a.
Ist es auch möglich den Standard-File-Dialog in einem Makro aufzurufen um den Benutzer nicht unnötig zu verwirren?
Vielen Dank für eure Hilfe,
Christian
Zuletzt geändert von poor am Mo 15. Jun 2015, 13:28, insgesamt 1-mal geändert.
-
- Beiträge: 185
- Registriert: Sa 13. Aug 2011, 10:01
- Wohnort: Chonburi Thailand Asia
- Kontaktdaten:
Re: Python Marco - File Dialog für Export
Ja, gibt es:
Quelle: OpenOffice.org Wiki
(mag keine zu langen Zeilen, deshalb umgebrochen)
Code: Alles auswählen
oCtx = uno.getComponentContext()
oServiceManager = oCtx.ServiceManager
oFilePicker = \
oServiceManager.createInstanceWithArgumentsAndContext(
'com.sun.star.ui.dialogs.FilePicker',
(FILESAVE_SIMPLE,),
oCtx
)
oFilePicker.Title = 'Exportieren als...'
oFilePicker.execute()
(mag keine zu langen Zeilen, deshalb umgebrochen)
Cheers
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)
Re: Python Marco - File Dialog für Export
Danke Winfried,
leider stürzt LibreOffice nach dem Ausführen des Scripts ab und ich kann den Pfad nicht auslesen:
Es gibt wirklich wenig Doku - weis nicht so richtig was ich tun soll...
Trotzdem vielen Dank,
Christian
leider stürzt LibreOffice nach dem Ausführen des Scripts ab und ich kann den Pfad nicht auslesen:
Code: Alles auswählen
import os
import uno
import sys
import traceback
from com.sun.star.ui.dialogs.TemplateDescription import FILESAVE_SIMPLE
def file_dialog():
try:
oCtx = uno.getComponentContext()
oServiceManager = ctx.getServiceManager()
oFilePicker = oServiceManager.createInstanceWithArgumentsAndContext(
'com.sun.star.ui.dialogs.FilePicker',
(FILESAVE_SIMPLE,),
oCtx
)
oFilePicker.Title = 'Export as'
#oDisp = oFilePicker.Text
oFilePicker.execute()
except:
pass
#oDisp = traceback.format_exc(sys.exc_info()[2])
Es gibt wirklich wenig Doku - weis nicht so richtig was ich tun soll...
Trotzdem vielen Dank,
Christian
-
- Beiträge: 185
- Registriert: Sa 13. Aug 2011, 10:01
- Wohnort: Chonburi Thailand Asia
- Kontaktdaten:
Re: Python Marco - File Dialog für Export
a) Schau' Dir die Beispiele in StarBasic an - soviel Unterschied gibt es nicht, zu Python (mit Ausnahme der im OOWiki erwähnten Sachen)poor hat geschrieben:Es gibt wirklich wenig Doku - weis nicht so richtig was ich tun soll...
b) einen Fehlerreport erstellen! Der Code läuft unter AOO 4.x einwandfrei, ich sehe keinen Grund, warum er das unter LO 4 nicht auch tun sollte.
Ich arbeite hauptsächlich mit AOO - auch bei mir stürzt das Makro (nach Auslösen der "Sichern" Taste) ab

[Sorry, wenn ich Dich da über's Wochenende auf eine "falsche" Fährte gelockt haben sollte - ich hätte das Makro mit LO schon letzte Woche probieren sollen: my fault]
Cheers
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)
Re: Python Marco - File Dialog für Export
Hallo
hier mal komplett (getestet mit LO4.4)
hier mal komplett (getestet mit LO4.4)
Code: Alles auswählen
import uno
from com.sun.star.beans import PropertyValue
#shortcut:
createUnoService = (
XSCRIPTCONTEXT
.getComponentContext()
.getServiceManager()
.createInstance
)
def pypdf_test():
desktop = XSCRIPTCONTEXT.getDesktop()
doc = desktop.getCurrentComponent()
# filter data
fdata = []
fdata1 = PropertyValue()
fdata1.Name = "SelectPdfVersion"
fdata1.Value = 1
fdata2 = PropertyValue()
fdata2.Name = "Quality"
fdata2.Value = 100
fdata.append(fdata1)
fdata.append(fdata2)
args = []
arg1 = PropertyValue()
arg1.Name = "FilterName"
arg1.Value = "writer_web_pdf_Export"
arg2 = PropertyValue()
arg2.Name = "FilterData"
arg2.Value = uno.Any("[]com.sun.star.beans.PropertyValue", tuple(fdata) )
args.append(arg1)
args.append(arg2)
fileurl = FilePicker()
if fileurl:
doc.storeToURL( fileurl, tuple(args) )
def FilePicker(path=None, mode=1):
"""
Datei öffnen: `mode in (0, 6, 7, 8, 9)`
Datei Schreiben `mode in (1, 2, 3, 4, 5, 10)`
see: ('''http://api.libreoffice.org/docs/idl/ref/
namespacecom_1_1sun_1_1star_1_1ui_1_1
dialogs_1_1TemplateDescription.html''' )
"""
filepicker = createUnoService( "com.sun.star.ui.dialogs.OfficeFilePicker" )
if path:
filepicker.setDisplayDirectory(path )
filepicker.initialize( ( mode,) )
if filepicker.execute():
return filepicker.getFiles()[0]
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Python Marco - File Dialog für Export
Grossartig karolus - funktioniert bestens! Ich habe noch:
für die pdfs hinzugefügt
Abschließende Frage: Kannst du mir erkären was der UnoService macht?
Vielen, vielen Dank für die Hilfe,
Christian
Code: Alles auswählen
.appendFilter("PDF Files (.pdf)", "*.pdf")
für die pdfs hinzugefügt

Code: Alles auswählen
import uno
from com.sun.star.beans import PropertyValue
#shortcut:
createUnoService = (
XSCRIPTCONTEXT
.getComponentContext()
.getServiceManager()
.createInstance
)
def pypdf_test():
desktop = XSCRIPTCONTEXT.getDesktop()
doc = desktop.getCurrentComponent()
# filter data
fdata = []
fdata1 = PropertyValue()
fdata1.Name = "SelectPdfVersion"
fdata1.Value = 1
fdata2 = PropertyValue()
fdata2.Name = "Quality"
fdata2.Value = 100
fdata.append(fdata1)
fdata.append(fdata2)
args = []
arg1 = PropertyValue()
arg1.Name = "FilterName"
arg1.Value = "writer_web_pdf_Export"
arg2 = PropertyValue()
arg2.Name = "FilterData"
arg2.Value = uno.Any("[]com.sun.star.beans.PropertyValue", tuple(fdata) )
args.append(arg1)
args.append(arg2)
fileurl = FilePicker()
if fileurl:
doc.storeToURL( fileurl, tuple(args) )
def FilePicker(path=None, mode=1):
"""
Datei öffnen: `mode in (0, 6, 7, 8, 9)`
Datei Schreiben `mode in (1, 2, 3, 4, 5, 10)`
see: ('''http://api.libreoffice.org/docs/idl/ref/
namespacecom_1_1sun_1_1star_1_1ui_1_1
dialogs_1_1TemplateDescription.html''' )
"""
filepicker = createUnoService( "com.sun.star.ui.dialogs.OfficeFilePicker" )
if path:
filepicker.setDisplayDirectory(path)
filepicker.initialize( ( mode,) )
filepicker.appendFilter("PDF Files (.pdf)", "*.pdf")
if filepicker.execute():
return filepicker.getFiles()[0]
Vielen, vielen Dank für die Hilfe,
Christian
Re: Python Marco - File Dialog für Export
wenn du den konkreten Service: "com.sun.star.ui.dialogs.OfficeFilePicker" meinst - dafür gibts die sdk-Dokumentation:Abschließende Frage: Kannst du mir erkären was der UnoService macht?
Filepicker
Falls du in dem Bereich eher """selbstständig""" arbeiten möchtest, empfehle ich MRI zur Objekt-Inspektion.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Python Marco - File Dialog für Datei Export
Orrr, stark! Vielen Dank - das hilft!
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.