Excel-Spaltenüberschriften nach CSV exportieren

Excel-Spaltenüberschriften nach CSV exportieren

Ich frage mich nur, wie ich Excel-Dateien in CSV exportieren und dabei die mehrspaltigen Überschriften beibehalten kann?

Mir ist bewusst, dass CSV dies nicht unterstützt, ich hoffe jedoch, dass ich den Kopfzeilennamen für jede Spalte, die durchlaufen wird, duplizieren kann.

Zur Veranschaulichung: Das ist, was ich derzeit bekomme

a,,,b,,,c,,
1,2,3,4,5,6,7,8,9
d1,d1,d1,d1,d1,d1,d1,d1,d1,d1 d2
,d2,d2,d2,d2,d2,d2,d2,d2,d2

Das ist, was ich möchte

a, a, a, b, b, b, c, c, c
1,2,3,4,5,6,7,8,9
d1,d1,d1,d1,d1,d1,d1,d1,d1,
d2,d2,d2,d2,d2,d2,d2,d2,d2

Ich habe nach einer Antwort gesucht, aber wenn ich nicht nach dem falschen Begriff suche, kann ich anscheinend nicht viel dazu finden.

Die Lösung muss nicht von Microsoft sein … kann auch eine Linux-Lösung sein.

Danke, Brian

Antwort1

Wenn Sie Ihre Tabelle file1.csvwie gezeigt nach exportiert haben,

#!/bin/sh
awk -F, -v OFS=, '
NR==1 {
        for (i = 1; i <= NF; i++) {
                if ($i == "") $i = prev
                prev=$i
        }
    }
{ print }' < file1.csv > file2.csv
  • -F, -v OFS=,setzt awkdie Eingabe- und Ausgabedateitrennzeichen auf ,.
  • NR==1bedeutet „Führen Sie das Folgende nur für den ersten Datensatz (die erste Zeile) aus“.
  • Die forSchleife betrachtet jedes Feld (jede Zelle) in der ersten Zeile und setzt es, wenn es leer ist, auf den vorhergehenden Wert.
  • { print }druckt alle Datensätze von file1.csvbis file2.csv, wobei der erste geändert wird (wie oben beschrieben) und alle anderen von der Eingabe zur Ausgabe durchgereicht werden (leere Zellen unterhalb der ersten Zeile werden also nicht manipuliert).

verwandte Informationen