CLI: LibreOffice von XLSX zu CSV

CSV’s parsen gestalten sich gerne spannend.

Da denke ich so an:

Wie speichern mit anderen Feld/Text-Trennzeichen?
Oder welche Zeichensätze werden unterstützt?
Noch interessanter wird’s wenn weder Docs noch Manpage weiterhelfen.

Ähnlich erging es mir beim Einsatz von LibreOffice. Hier die Learnings.

CSV’s parsen gestalten sich gerne spannend.

Da denke ich so an:

  • Wie speichern mit anderen Feld/Text-Trennzeichen?
  • Oder welche Zeichensätze werden unterstützt?

Noch interessanter wird’s wenn weder Docs noch Manpage weiterhelfen.

Ähnlich erging es mir beim Einsatz von LibreOffice. Hier die Learnings.

Requirements

  • LibreOffice

TL;DR

  • Feld-Trenner werden in ASCII (dezimal) angebeben.
  • Text-Trenner mit einfachen (39) oder doppelten (34) Anführungszeichen in ASCII (dezimal).
  • Liste gültiger Zeichensätze.
  • Liste gültiger Spalten-Formattierungen.
  • Beispiel um XLSX zu CSV konvertieren:
# StarCalc:$feldTrenner,$textTrenner,$zeichensatz,$nummerDerErstenZeile,$ersteSpalte/$formattierungDerErstenSpalte
libreoffice --headless --convert-to "csv:Text - txt - csv (StarCalc):44,34,76,1,1/1" $xlsDatei --outdir $ausgabeOrdner

Hintergrund

Mit der Installation von LibreOffice erhalten wir bestimmte Terminal-Befehle.

Terminal Dinge finden wir alle ziemlich cool.

Macht das IT dasein gleich viel interessanter… ?‍?‍♂️

Eine Übersicht verfügbarer Befehle erhalten wir durch öffnen eines Terminals (Unter Ubuntnu [strg] + [alt] + T) und libreoffice --help.

Daraufhin erscheint etwas wie diese hier:

Daraus lernen wir zwei Dinge:

  • --headless
  • und --convert-to.

LibreOffice Convert To

convert-to wandelt Dateien von einem Format in ein anderes.

Das ist cool um z.B. Word-Dokumente als PDF zu speichern.

Oder eben Excel-Dateien als CSV.

Um so zu tun hämmern wir in unser Temrinal etwas wie:

libreoffice --headless --convert-to "csv:Text - txt - csv (StarCalc):44,34,76,1,1/1" $xlsXDatei --outdir $ausgabeOrdner

Obacht: Denke daran $xlsxDatei sowie $ausgabeOrdner mit deinen Werten auszutauschen.

CSV Trenner, Zeichensätze und Formate anpassen

Unter Umständen müssen wir den Befehl anpassen.

Da hilft es zu wissen wie das Argument --convert-to in etwa funktioniert.

Wenn --convert-to Sätze wären sähe das in etwa so aus:

Hey LibreOffice,

erstelle eine csv.

Nutze den Filter Text mit den Parametern txt und csv (StarCalc).

Schnapp die Daten aus $xlsDatei.

Und schmeiß die neue Datei in folgenden $ausgabeOrdner.

Die StarCalc-Konfiguration lautet:
1. $feldTrenner, 
2. $textTrenner, 
3. $zeichensatz, 
4. $nummerDerErstenZeile, 
5. {$indexDerSpalteX/$formattierungDerSpalteX},
6. {,$sprache,...} 

An sich kein Hexenwerk.

Wenn wir jetzt noch eine Übersicht für gültige StarCalc Eingaben hätten. Hmm..

Here we go:

Gültige StarCalc Feld-Trenner

Feld-Trenner werden in ASCII (dezimal) angegeben.

Werden mehrere Zeichen als Trenner genutzt, so trennen wir diese mit Slash (/).

Beispiele:

  • 44 für Komma (,)
  • 59/9 für Semikolon (;) und TAB

Kudos to OpenOffice Wiki.

Liste von StarCalc Text-Trenner

Text-Trenner übergeben wir auch in ASCII (dezimal).

Gültig sind einfache ('), so wie doppelte (") Anführungszeichen.

ASCIIZeichen
34
39
Kudos to OpenOffice Wiki.

Liste von StarCalc Zeichensätzen

ZeichensatzIndex
Unknown0
Windows-1252/WinLatin 1 (Western)1
Apple Macintosh (Western)2
DOS/OS2-437/US (Western)3
DOS/OS2-850/International (Western)4
DOS/OS2-860/Portuguese (Western)5
DOS/OS2-861/Icelandic (Western)6
DOS/OS2-863/Canadian-French (Western)7
DOS/OS2-865/Nordic (Western)8
System default9
Symbol10
ASCII/US (Western)11
ISO-8859-1 (Western)12
ISO-8859-2 (Central European)13
ISO-8859-3 (Latin 3)14
ISO-8859-4 (Baltic)15
ISO-8859-5 (Cyrillic)16
ISO-8859-6 (Arabic)17
ISO-8859-7 (Greek)18
ISO-8859-8 (Hebrew)19
ISO-8859-9 (Turkish)20
ISO-8859-14 (Western)21
ISO-8859-15/EURO (Western)22
DOS/OS2-737 (Greek)23
DOS/OS2-775 (Baltic)24
DOS/OS2-852 (Central European)25
DOS/OS2-855 (Cyrillic)26
DOS/OS2-857 (Turkish)27
DOS/OS2-862 (Hebrew)28
DOS/OS2-864 (Arabic)29
DOS/OS2-866/Russian (Cyrillic)30
DOS/OS2-869/Modern (Greek)31
DOS/Windows-874 (Thai)32
Windows-1250/WinLatin 2 (Central European)33
Windows-1251 (Cyrillic)34
Windows-1253 (Greek)35
Windows-1254 (Turkish)36
Windows-1255 (Hebrew)37
Windows-1256 (Arabic)38
Windows-1257 (Baltic)39
Windows-1258 (Vietnamese)40
Apple Macintosh (Arabic)41
Apple Macintosh (Central European)42
Apple Macintosh/Croatian (Central European)43
Apple Macintosh (Cyrillic)44
Not supported: Apple Macintosh (Devanagari)45
Not supported: Apple Macintosh (Farsi)46
Apple Macintosh (Greek)47
Not supported: Apple Macintosh (Gujarati)48
Not supported: Apple Macintosh (Gurmukhi)49
Apple Macintosh (Hebrew)50
Apple Macintosh/Icelandic (Western)51
Apple Macintosh/Romanian (Central European)52
Apple Macintosh (Thai)53
Apple Macintosh (Turkish)54
Apple Macintosh/Ukrainian (Cyrillic)55
Apple Macintosh (Chinese Simplified)56
Apple Macintosh (Chinese Traditional)57
Apple Macintosh (Japanese)58
Apple Macintosh (Korean)59
Windows-932 (Japanese)60
Windows-936 (Chinese Simplified)61
Windows-Wansung-949 (Korean)62
Windows-950 (Chinese Traditional)63
Shift-JIS (Japanese)64
GB-2312 (Chinese Simplified)65
GBT-12345 (Chinese Traditional)66
GBK/GB-2312-80 (Chinese Simplified)67
BIG5 (Chinese Traditional)68
EUC-JP (Japanese)69
EUC-CN (Chinese Simplified)70
EUC-TW (Chinese Traditional)71
ISO-2022-JP (Japanese)72
ISO-2022-CN (Chinese Simplified)73
KOI8-R (Cyrillic)74
Unicode (UTF-7)75
Unicode (UTF-8)76
ISO-8859-10 (Central European)77
ISO-8859-13 (Central European)78
EUC-KR (Korean)79
ISO-2022-KR (Korean)80
JIS 0201 (Japanese)81
JIS 0208 (Japanese)82
JIS 0212 (Japanese)83
Windows-Johab-1361 (Korean)84
GB-18030 (Chinese Simplified)85
BIG5-HKSCS (Chinese Traditional)86
TIS 620 (Thai)87
KOI8-U (Cyrillic)88
ISCII Devanagari (Indian)89
Unicode (Java’s modified UTF-8)90
Adobe Standard91
Adobe Symbol92
PT 154 (Windows Cyrillic Asian codepage
developed in ParaType)
93
Unicode UCS465534
Unicode UCS265535
Kudos to OpenOffice Wiki.

StarCalc Spalten

Beispiele:

  • 1/1 => Spalte 1 und mit Standard Formattierung.
  • 2/1 => Spalte 2 und mit Standard Formattierung.
  • 4/3 => Spalte 4 und mit dem Format MM/DD/YY.
  • 6/9 => Spalte 6 und nicht speichern.

Nehmen wir an:

Drei Spalten alle werden im Standard Format gespeichert.

Ergibt:

1/1/2/1/3/1

Bei zwei Spalten, die erste Standard, die zweite Datum beginnend mit Jahr.

1/1/2/5

Oder bei zwei Spalten, die erste nicht importieren, zweite als Standard.

1/9/2/1

Liste von StarCalc Spalten-Formattierungen

IndexBeschreibung
1Standard
2Text
3MM/DD/YY
4DD/MM/YY
5YY/MM/DD
6
7
8
9ignore field (do not import)
10US-English
Kudos to OpenOffice Wiki.

Weitere Argumente

Wir können weitere Libre Argumente übergeben.

In dem Bereich kann ich noch nicht auf Erfahrung zurückgreifen.

Daher, solltest du in der Situation sein und musst Language Identifier oder einen der Libre Checkboxen ansprechen, kann ich dir raten OpenOffice Wiki zu durchstöbern und zu hoffen das die Reihenfolge noch gleich sind.

Schreibe einen Kommentar