![Excel の列ヘッダーを csv にエクスポートする](https://rvso.com/image/1414672/Excel%20%E3%81%AE%E5%88%97%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%82%92%20csv%20%E3%81%AB%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B.png)
複数列のヘッダーを保持したまま、Excel ファイルを CSV にエクスポートする方法を知りたいのですが。
csv ではこれがサポートされていないことは承知していますが、各列ごとにヘッダー名を複製できることを期待しています。
例えば、私が現在得ているのはこれです
a,,,b,,,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
これが私の希望です
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
答えを見つけるために検索しましたが、間違った用語を検索していない限り、あまり見つけられないようです。
ソリューションは Microsoft である必要はありません。Linux ソリューションでもかまいません。
ありがとう、ブライアン
答え1
スプレッドシートを にエクスポートした場合はfile1.csv
、次のようにします。
#!/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=,
awk
の入力および出力ファイル区切り文字を に設定します,
。NR==1
「最初のレコード(行/列)に対してのみ次の操作を実行する」という意味です。- ループ
for
は最初の行の各フィールド (セル) を調べ、空白の場合は前の値と同じ値に設定します。 { print }
file1.csv
からまでのすべてのレコードを出力しますfile2.csv
。最初のレコードは変更され (上記のように)、その他はすべて入力から出力に渡されます (したがって、最初の行の下の空のセルは改ざんされません)。