GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konvertieren einer .xlsx-Datei (MS Excel) in eine .csv-Datei in der Befehlszeile mit durch Semikolons getrennten Feldern?

Mir ist klar, dass dies nicht ist eine vollständig unix / linux-bezogene Frage. Aber da ich das unter Linux machen werde, hoffe ich, dass jemand eine Antwort hat.

Ich habe eine Online-Excel-Datei (.xlsx ), die regelmäßig (von jemand anderem) aktualisiert wird. Ich möchte ein Skript schreiben und es als Cronjob einfügen, um diese Excel-Tabelle zu verarbeiten. Aber dazu muss ich das in eine Textdatei umwandeln (also eine .csv ) mit Semikolon getrennten Spalten. Es kann leider nicht durch Kommas getrennt werden, da einige Spalten Kommas enthalten. Ist es überhaupt möglich, diese Konvertierung von der Shell aus durchzuführen? Ich habe Open Office installiert und kann dies über die GUI tun, möchte aber wissen, ob dies über die Befehlszeile möglich ist. Danke!

PS:Ich habe auch einen Mac-Computer, also wenn eine Lösung dort funktionieren kann, ist das auch gut. 🙂

Akzeptierte Antwort:

OpenOffice wird mit dem unoconv-Programm geliefert, um Formatkonvertierungen auf der Befehlszeile durchzuführen.

unoconv -f csv filename.xlsx

Für komplexere Anforderungen können Sie XLSX-Dateien mit Spreadsheet::XLSX parsen in Perl oder openpyxl in Python. Hier ist zum Beispiel ein Quickie-Skript, um ein Arbeitsblatt als semikolon-separierte CSV-Datei auszudrucken (Achtung:ungetestet, direkt in den Browser eingegeben):

perl -MSpreadsheet::XLSX -e '
    $ = "n"; $, = ";";
    my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
    my $worksheet = ($workbook->worksheets())[0];
    my ($row_min, $row_max) = $worksheet->row_range();
    my ($col_min, $col_max) = $worksheet->col_range();
    for my $row ($row_min..$row_max) {
        print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
    }
' filename.xlsx >filename.csv

Linux
  1. Verkleinern Sie die PDF-Größe mit diesem Befehlszeilentrick

  2. Kopieren und Einfügen in der Linux-Befehlszeile mit xclip

  3. Wie konvertiere ich eine Excel-Datei über die Befehlszeile in eine Calc-Datei?

  4. Wie konvertiert man ein PDF in JPG mit der Befehlszeile unter Linux?

  5. Wie ersetze ich eine Datei im JAR durch die Befehlszeile in Linux?

Linux-Tail-Befehl mit Beispielen

Linux-WC-Befehl mit Beispielen

Konvertieren Sie Dateinamen über die Ubuntu-Befehlszeile in Kleinbuchstaben

So senden Sie eine E-Mail mit Dateianhang von der Befehlszeile aus

So konvertieren Sie xlsx in das CSV-Format unter Linux

Verwendung des Linux-mv-Befehls mit Beispielen