Geben Sie die Codierung mit libreoffice --convert-to csv an


10

Excel-Dateien können mithilfe von:

$ libreoffice --convert-to csv --headless --outdir dir file.xlsx

Alles scheint gut zu funktionieren. Die Codierung ist jedoch auf etwas Wonky eingestellt. Anstelle eines UTF-8-MDash (-), den ich erhalte, wenn ich manuell von LibreOffice Calc ein "Speichern unter" durchführe, erhalte ich ein \ 227 ( ). Wenn ich eine Datei in der CSV verwende, erhalte ich "Nicht-ISO-Extended-ASCII-Text mit sehr langen Zeilen". Also zwei Fragen:

  1. Was um alles in der Welt passiert hier?
  2. Wie kann ich libreoffice anweisen, auf UTF-8 zu konvertieren?

Die spezifische Datei, die ich konvertieren möchte, ist hier .

Antworten:


7

Anscheinend versucht LibreOffice standardmäßig, ISO-8859-1 zu verwenden, was das Problem verursacht. Als Antwort auf diesen Fehlerbericht wurde ein neuer Parameter --infilterhinzugefügt. Der folgende Befehl erzeugt U + 2014 em dash :

libreoffice  --convert-to csv --infilter=CSV:44,34,76,1 --headless --outdir dir file.xlsx

Ich habe dies mit LO 5.0.3.2 getestet. Aus dem Fehlerbericht geht hervor, dass die früheste Version, die diese Option enthält, LO 4.4 ist.

Siehe auch: https://ask.libreoffice.org/en/question/13008/how-do-i-specify-an-input-character-coding-for-a-convert-to-command-line-usage/


Vielen Dank! Immer noch kein Erfolg. Mit dieser Befehlszeile: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; es hat immer noch 0x97 für den em dash. Ich bin verblüfft. Ich verwende LO 4.2.8.2 420m0 (Build: 2) unter Ubuntu 14.04.
Scott Deerwester

Sie müssen wahrscheinlich auf LO 4.4 oder neuer aktualisieren, wie in meiner Antwort erwähnt.
Jim K

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvarbeitete für mich. Referenz .
Adobe

Haben Sie einen Link, über den diese infilterOptionen aufgelistet sind? Der von @Adobe gepostete Link ist längst veraltet.
Kebs

--infilterEs scheint sich um die Eingabedatei zu handeln, und deshalb funktioniert der Befehl von @Adobe (CSV-Eingabe), und der Befehl des OP (XLSX-Eingabe) funktioniert nicht - nur eine Vermutung
Uhr

1

Du könntest es versuchen,

    $ libreoffice --convert-to \
    > csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0" \
    > --headless --outdir dir file.xlsx 

Hier haben Sie eine sehr detaillierte Hilfe zu.


Danke für die Antwort. Ich bekomme es immer noch nicht, die zusätzlichen Token zu akzeptieren. Ich habe versucht --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1 ,, 0", --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1,1 / 2/2/2/3/2/4/2/5/2/6/2/7/2/8/2/9/1/10/3 "und verschiedene andere Kombinationen. Irgendwelche Vorschläge?
Scott Deerwester

csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"doppelt zitiert" :"doppelt zitiert"
xae

Das wird nur relativ zur Shell sein, aber ich habe es trotzdem mit den gleichen Ergebnissen versucht.
Scott Deerwester

Hier verwenden unoconvund direkt sofficefür eine verwandte Aufgabe, könnte vielleicht helfen.
xae
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.