Seite 1 von 1
Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Mo 25. Aug 2014, 16:31
von lumnis
Hallo,
ich habe nun schon eine Weile gesucht, komme aber nicht weiter.
Anliegen:
Ich möchte Daten aus Calc in eine Textdatei mit einem bestimmten Dateiformat schreiben, damit diese von anderen Programmen verwendet werden kann.
Lösungsansatz:
Ein Macro, vorzugsweise in Python, das die Daten aus Calc nimmt und in eine Textdatei der entsprechenden Form schreibt. Die Bibliothek zum Schreiben der Datei soll ebenfalls in Python sein.
Umsetzung:
Eine (leere) python Datei wurde erzeugt, wird im LibreOffice Macro-Selektor angezeigt und kann auch mit "Ausführen" ausgeführt werden.
Problem:
Ich kann scheinbar nicht wie gewöhnlich normale Python calls verwenden:
1: Sobald ich für Testzwecke ein 'print "Testtext" ' einfüge, wird das Macro nicht mehr angezeigt.
2: Versuch, dies über ein importiertes Modul zu lösen, gibt eine Import Fehlermeldung.
LO Macro Datei - writeFile.py:
Code: Alles auswählen
import TextFileFormat
def writeFileTxt( ):
"""Write to a text file"""
writeFileFormat
return None
Modul zum eigentlichen Datei schreiben - TextFileFormat.py
Re: Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Mo 25. Aug 2014, 18:09
von karolus
Hallo
Quelltext, insbesondere Pythonquelltext sollte man hier in
tags[/code] reinschreiben.
1: Sobald ich für Testzwecke ein 'print "Testtext" ' einfüge, wird das Macro nicht mehr angezeigt.
LO arbeitet inzwischen mit Python3.3 - seit 3 ist `print` eine Function kein Statement, schreibe print
( "irgendwas
)
ansonsten: python ist nicht Java du musst nicht jeden Pipifax in eine extra Datei reinschreiben.
lumnis hat geschrieben:
LO Macro Datei - writeFile.py:
Code: Alles auswählen
import TextFileFormat
def writeFileTxt( ):
"""Write to a text file"""
writeFileFormat # du möchtes writFileFormat() auch ausführen ()←Klammern
return None # ist überflüssig das tut die Funktion auch ohne `return None` an der Stelle
Modul zum eigentlichen Datei schreiben - TextFileFormat.py
Code: Alles auswählen
def writeFileFormat():
print "Datenreihe 1 " # Hier fehlen die ( Klammern )
an welches
bestimmte Dateiformat hast du denn gedacht? und welche Daten möchtest du exportieren?
Karolus
Re: Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Mo 25. Aug 2014, 23:35
von lumnis
Hallo Karolus,
vielen Dank für Deine Kommentare und Anregungen.
karolus hat geschrieben:Hallo
Quelltext, insbesondere Pythonquelltext sollte man hier in
tags[/code] reinschreiben.
Hab ich korrigiert, danke für den Hinweis.
1: Sobald ich für Testzwecke ein 'print "Testtext" ' einfüge, wird das Macro nicht mehr angezeigt.
LO arbeitet inzwischen mit Python3.3 - seit 3 ist `print` eine Function kein Statement, schreibe print
( "irgendwas
)
Danke. Hab ich testweise mal probiert.
ansonsten: python ist nicht Java du musst nicht jeden Pipifax in eine extra Datei reinschreiben.
Hatte ich zu Beginn auch nicht unbedingt vor. Das entstand aus der Tagsache, dass mit dem "print" das Macro nicht mehr in LO ausführbar war. Die Anpassungen ergaben aber auch keine Änderung. Sobald ich das print in die Macro Datei aufnehme, wird dieses Macro nicht mehr im Makro-Selektor angezeigt.
lumnis hat geschrieben:
LO Macro Datei - writeFile.py:
Code: Alles auswählen
import TextFileFormat
def writeFileTxt( ):
"""Write to a text file"""
writeFileFormat # du möchtes writFileFormat() auch ausführen ()←Klammern
Modul zum eigentlichen Datei schreiben - TextFileFormat.py
Code: Alles auswählen
def writeFileFormat():
print "Datenreihe 1 " # Hier fehlen die ( Klammern )
Also wie gesagt, wenn ich das Macro 1 (writeFile.py) ändere in
Code: Alles auswählen
import TextFileFormat
def writeFileTxt( ):
print("writeFileTxt aufgerufen")
wird dieses Macro nicht mehr angezeigt und kann deshalb nicht mehr ausgeführt werden.
Daher die Frage:
Wie sieht ein Macro aus, mit dem ich direkt in eine Textdatei schreiben kann und womit ich das Dateiformat selbst bestimmen kann?
Karolus hat geschrieben:
an welches bestimmte Dateiformat hast du denn gedacht? und welche Daten möchtest du exportieren?
Das Dateiformat ist epw und enthält Klimadaten. Es handelt sich dabei also hauptsächlich um Komma-separierte Zahlenreihen, mit Datum am Anfang.
Karolus[/quote]
Re: Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Di 26. Aug 2014, 12:26
von lumnis
Karolus,
Vielen Dank für Deine Bemerkungen und damit den Weg zur Lösung.
Es funktioniert jetzt direkt in der Python Datei.
Danke.
Re: Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Di 26. Aug 2014, 13:44
von karolus
Hallo
Auch wenn du jetzt eine funktionierende Lösung hast - kannst du den derzeitigen Code posten -
Das CodeBeispiel kann zukünftigen Fragestellern helfen, und die Kritik (die du vmtl. von mir bekommst

) schadet nicht!
Karolus
Re: Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Di 26. Aug 2014, 13:55
von lumnis
Beispielcode zum schreiben in eine Textdatei
Code: Alles auswählen
def writeTextFile():
file_object = open('outputtextfile.txt','w')
file_object.write("Test Text from TextfileWriter")
file_object.close()
Diesen Code in eine Datei mit Namen "textFileWriter.py" speichern und in das LO Nutzerverzeichnis,
unter Linux z.B. (openSUSE) /home/username/.config/libreoffice/4-suse/user/Scripts/python/ kopieren.
Nach dem Neustart von LibreOffice steht das neue Makro zum Ausführen bereit.
Re: Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Di 26. Aug 2014, 15:15
von karolus
Hallo
Das ist soweit ok, im allgemeinen wird dafür folgendes empfohlen:
Code: Alles auswählen
def writeTextFile():
with open('outputtextfile.txt','w') as file_object:
file_object.write("Test Text from TextfileWriter")
damit spart man das explizite Schliessen mit
...close() was ottoNormalProgrammierer eh gerne mal vergisst, und es wird bestmöglich garantiert das `file_object` in jedem Fall ( Erdbeben, Kometeneinschlag, Stromausfall

) geschlossen wird.
Ausserdem solltest du dir grundsätzlich 4 Leerzeichen pro Einrückungsebene angewöhnen (bzw. deinem Texteditor ) -
dein gezeigter Code hat anscheinend nur 3 Leerzeichen anzubieten.
Karolus
Re: Macro : Python : Daten aus Calc in Textdatei schreiben
Verfasst: Mi 27. Aug 2014, 16:10
von lumnis
karolus hat geschrieben:Hallo
Das ist soweit ok, im allgemeinen wird dafür folgendes empfohlen:
Code: Alles auswählen
def writeTextFile():
with open('outputtextfile.txt','w') as file_object:
file_object.write("Test Text from TextfileWriter")
damit spart man das explizite Schliessen mit
...close() was ottoNormalProgrammierer eh gerne mal vergisst, und es wird bestmöglich garantiert das `file_object` in jedem Fall ( Erdbeben, Kometeneinschlag, Stromausfall

) geschlossen wird.
Vielen Dank für den Hinweis. Ich hatte die Lösung aus einem Buch und die hat es erstmal für mich getan.
karolus hat geschrieben:
Ausserdem solltest du dir grundsätzlich 4 Leerzeichen pro Einrückungsebene angewöhnen (bzw. deinem Texteditor ) -
dein gezeigter Code hat anscheinend nur 3 Leerzeichen anzubieten.
Karolus
Ja, mein Editor (jedit / kate) habe ich noch nicht wieder konfiguriert gehabt, was der Grund für einen Teil der Probleme war. Beim Einfügen war noch der Tab drin, so kamen die 3 Leerzeichen im gezeigten Code. Für die weitere Entwicklung folge ich deiner Empfehlung.
Vielen Dank nochmal für Deine Unterstützung durch die vielen hilfreichen Hinweise.