Es gibt schon etwas seltsame Situationen wie z.B. diese: Je nachdem welche/r Sachbearbeiter/in bei unserem Steuerberater den aktuellen Monat bucht die Belegliste entweder als *.csv- oder als *.xls-Datei vorliegen muss.
Als JTL-Anwender wird bei uns automatisch über die Ameise eine *.csv-Datei erzeugt. Eigentlich ist es kein Problem, diese mit Excel oder einem anderem Tabellenkalkulationsprogramm zu Öffnen und ggf. umzuwandeln, gemeint ist in einem anderen Format zu speichern. Scheinbar überfordert allerdings dieser Vorgang so manchen Anwender (ohne das dies nun negativ gemeint sein soll), und damit wir nicht diesen Vorgang händisch ausführen müssen kam der Wunsch auf, dies ebenso automatisch erledigen zu lassen wie das Erstellen der *.csv.
Eine kurze Recherche zu MS Excel lieferte imho eher abschreckende Ergebnisse. So ist das geplante Vorhaben beispielsweise nur via Macro oder VBA möglich, headless im Hintergrund auf einem Server anscheinend gar nicht (korrigiert mich, wenn ich mich irre).
Kurz weiter drüber nachgedacht, dämmerte mir, das bei OpenOffice ein Headless-Mode zur Verfügung steht. LibreOffice als Quasi-Nachfolger bietet diesen ebenso + eine weitere entscheidende Verbesserung.
Wie bei *.csv üblich, muss bei einer Umwandlung bzw. beim Öffnen schon angegeben werden, was als Trennzeichen zu verwenden ist. Das Gleiche gilt dann eben auch für den Aufruf via Skript.
Lange Rede, kurzer Sinn, der Befehl sieht in etwa so aus:
soffice --headless --convert-to xls --infilter="csv:59,34" <Quelldateiname>.csv
Die Syntax ist quasi selbsterklärend mit Ausnahme von “–infilter”, dieses legt fest was als Trennzeichen verwendet wird. Die Trennzeichen werden als Dezimalwert gemäss ASCII angegeben:
- 59 entspricht dem Semikolon (Strichpunkt)
- 34 ist ein Anführungszeichen
Zusätzlich kann man noch das Dateiformat wie z.B. UTF8 angeben, damit hatten wir allerdings das Problem, das Umlaute verloren gingen.
Quellen:
Apache OpenOffice – Forum – [Basic] Convert ods to csv via commandline
LibreOffice – Help – Starting the LibreOffice Software With Parameters
LibreOffice – Ask – Convert-to from csv to ods and viceversa (die eigentliche Quelle von infilter mit ASCII)
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Das ist ja geil. Sowas suche ich im Moment gerade. Danke.