384 Stimmen

Konvertieren von xlsx in csv in Linux mit der Befehlszeile

Ich suche nach einer Möglichkeit, xlsx-Dateien unter Linux in csv-Dateien zu konvertieren.

Ich möchte nicht PHP/Perl oder etwas Ähnliches verwenden, da ich mehrere Millionen Zeilen verarbeiten möchte, also brauche ich etwas Schnelles. Ich fand ein Programm auf der Ubuntu Repos namens xls2csv, aber es wird nur xls (Office 2003) Dateien konvertieren (die ich derzeit verwenden), aber ich brauche Unterstützung für die neueren Excel-Dateien.

Irgendwelche Ideen?

345voto

jmcnamara Punkte 33232

En Gnumeric Tabellenkalkulationsprogramm wird mit einem Befehlszeilenprogramm namens ssconvert die zwischen einer Vielzahl von Tabellenkalkulationsformaten konvertieren kann:

$ ssconvert Book1.xlsx newfile.csv
Using exporter Gnumeric_stf:stf_csv

$ cat newfile.csv 
Foo,Bar,Baz
1,2,3
123.6,7.89,
2012/05/14,,
The,last,Line

Zur Installation unter Ubuntu:

apt-get install gnumeric

Zur Installation auf dem Mac:

brew install gnumeric

187voto

andrewtweber Punkte 22611

Wenn Sie bereits eine Desktop-Umgebung haben, dann bin ich sicher, dass Gnumeric / LibreOffice gut funktionieren würde, aber auf einem Headless Server (wie Amazon Web Services) benötigen sie Dutzende von Abhängigkeiten, die Sie ebenfalls installieren müssen.

Ich habe diese Python-Alternative gefunden:

https://github.com/dilshod/xlsx2csv

$ easy_install xlsx2csv
$ xlsx2csv file.xlsx > newfile.csv

Die Installation dauerte nur 2 Sekunden und funktioniert einwandfrei.

Wenn Sie mehrere Blätter haben, können Sie alle auf einmal oder eines nach dem anderen exportieren:

$ xlsx2csv file.xlsx --all > all.csv
$ xlsx2csv file.xlsx --all -p '' > all-no-delimiter.csv
$ xlsx2csv file.xlsx -s 1 > sheet1.csv

Er verweist auch auf mehrere Alternativen, die in Bash, Python, Ruby und Java erstellt wurden.

183voto

spiffytech Punkte 5678

Sie können dies mit LibreOffice tun:

libreoffice --headless --convert-to csv $filename --outdir $outdir

Aus Gründen, die mir nicht klar sind, müssen Sie dies möglicherweise mit sudo ausführen. Sie können LibreOffice mit sudo laufen lassen, ohne ein Passwort zu benötigen, indem Sie diese Zeile in Ihre sudoers-Datei einfügen:

users ALL=(ALL) NOPASSWD: libreoffice

62voto

Holger Brandl Punkte 9150

Verwenden Sie csvkit

in2csv data.xlsx > data.csv

Weitere Informationen finden Sie in der ausgezeichneten docs

50voto

neves Punkte 25455

In der Bash habe ich diesen libreoffice-Befehl verwendet, um alle meine xlsx-Dateien im aktuellen Verzeichnis zu konvertieren:

for i  in *.xlsx; do  libreoffice --headless --convert-to csv "$i" ; done

Schließen Sie alle offenen Instanzen von Libre Office, bevor Sie das Programm ausführen, sonst schlägt es unbemerkt fehl.

Der Befehl beachtet Leerzeichen im Dateinamen.

Einige Jahre später versuchte ich es erneut, aber es funktionierte nicht. Dieses Thema gibt einige Tipps, aber die schnellste Lösung war, als Root zu laufen (oder ein sudo libreoffice ). Nicht elegant, aber schnell.

Verwenden Sie den Befehl scalc.exe unter Windows

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X