Seite 1 von 1
Export und Upload aus Calc
Verfasst: Mi 20. Jan 2021, 17:30
von Niels$
Moin zusammen,
ich möchte über ein Makro ein Blatt nach CSV im UTF8-Format exportieren und dieses UTF8 auf einen HTTPS-Server hochladen. Nun habe ich etwas recherchiert und der Upload scheint in Python recht einfach zu sein, für LO-Basic habe ich dazu nichts gefunden. Anders herum habe ich Python nicht gefunden, wie ich den Export gestalte (welchen ich ja 'einfach' aufzeichnen würde).
Kann man nun aus dem LO-Basic noch ein Python-Makro starten oder ist der Export der Daten in Python auch einfach?
Ich kann leider nur etwas MS-Basic und muss mich so oder so einlesen - von daher ist es egal wo.
Niels
Re: Export und Upload aus Calc
Verfasst: Mi 20. Jan 2021, 18:29
von gogo
Du kannst Libreoffice-Makros auch "von außen" aufrufen:
Code: Alles auswählen
os.system('libreoffice macro:///BIBLIOTHEK.MODUL.MAKRONAME\\()')
Unter Windows wird der Befehl "libreoffice" vermutlich "libreoffice.exe" heißen - musst Du suchen.
Wenn Du dem Makro Parameter übergeben willst:
Code: Alles auswählen
os.system('libreoffice macro:///BIBLIOTHEK.MODUL.MAKRONAME\\("ParameterA", "ParameterB"\\)')
BIBLIOTHEK.MODUL.MAKRONAME ersetzt Du durch den Ort wo Dein Makro zu finden ist. z.B. Standard.Module1.MeinMakroYXZ
Re: Export und Upload aus Calc
Verfasst: Mi 20. Jan 2021, 23:00
von Wanderer
Niels$ hat geschrieben: ↑Mi 20. Jan 2021, 17:30
...
ich möchte über ein Makro ein Blatt nach CSV im UTF8-Format exportieren und dieses UTF8 auf einen HTTPS-Server hochladen. Nun habe ich etwas recherchiert und der Upload scheint in Python recht einfach zu sein, für LO-Basic habe ich dazu nichts gefunden.
...
Da es fertige FTP-Clients gibt, frage ich mich, ob es nicht wesentlich einfacher wäre den Upload-Befehl einfach per SHELL() als Kommandozeile von BASIC aus zu starten.
Beispiel z.B. WinSCP
https://superuser.com/questions/239860/ ... mmand-line
Mfg, Jörn
Re: Export und Upload aus Calc
Verfasst: Fr 22. Jan 2021, 14:00
von Niels$
Danke für Eure Anregungen. WinSCP kann meines Erachtens nicht über ein HTTP-Put eine Datei hochladen, das spricht nur mit einem WebDAV. Aber ich habe ein PowerShell-Script, was das Ganze mit curl löst. Das ist vielleicht ganz gut so, denn ich habe mir bereits in der DotNet-Weld die Ohren an der Digest Authentication gebrochen, dass scheinen die MS-Methoden nich vollumfänglich zu beherrschen.
Ich bin jetzt mit Makroaufzeichnung und wenigen manuellen Anpassungen im Makro schon relativ weit. Ich bereite die Daten auf und exportiere sie. Nun fehlt nur noch der Makro-Start, da werde ich jetzt etwas forschen und ggf. nerven. Hier ist das Herausforderung, dass das Powershell-Script aus dem richtigen Pfad heraus gestartet wird, damit es die curl-Komponenten findet.
Niels
Re: Export und Upload aus Calc
Verfasst: Fr 22. Jan 2021, 15:23
von Niels$
Eben stand ich noch vor dem Abgrund - jetzt bin ich einen Schritt weiter
Ich schreibe jetzt aus dem Makro eine CMD-Datei, die ich ausführen will. Doch wie starte ich die aus dem LO-Basic-Macro? Ich habe schon viel gesucht, doch ich finde immer nur, wie ich LO von der Befehlszeile aus starten kann und was es da alles für Parameter gibt. Vermutlich fehlen mir mal wieder die richtigen Suchworte.
Niels
Re: Export und Upload aus Calc
Verfasst: Fr 22. Jan 2021, 16:42
von Wanderer
Hallo,
Ich habe absichtlich SHELL() geschrieben.
Schau z.B. hier
https://ask.libreoffice.org/en/question ... ro-solved/
Findet man schnell per Suchmaschine mit
Notfalls gibt es auch die normale Hilfe
https://help.libreoffice.org/3.3/Basic/ ... on_Runtime
Mfg, Jörn
PS Für die Pfade kann man auch im Skript mit cd arbeiten
Re: Export und Upload aus Calc
Verfasst: Fr 22. Jan 2021, 21:12
von Niels$
Danke Jörn,
wer lesen kann ist wie immer im Vorteil
Um nicht zu viel mit Pfaden jonglieren zu müssen habe ich da bereits den Kram, wie von Dir vorgeschlagen ausgelagert. Ich erstelle dynamisch eine cmd-Datei, in der ich explizit das Laufwerk meines Arbeitsverzeichnisses wähle und dann mit cd in den Pfad wechsle. Dabei ist der Pfad sicherheitshalber noch in Anführungszeichen, falls jemand Leerzeichen in‘s Spiel bringt.
Niels