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.