我只是想知道如何将 excel 文件导出为 csv 同时保留多列标题?
我意识到 csv 不支持这一点,但是我希望我可以为它经过的每一列重复标题名称。
为了说明,这就是我目前得到的
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
这就是我想要的
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,d1
d2,d2,d2,d2,d2,d2,d2,d2,d2,d2
我已经搜索过答案,但是除非我搜索了错误的术语……否则我似乎找不到太多信息。
解决方案不一定是微软的...也可以是 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
,其中第一个记录被修改(如上所述)并且所有其他记录从输入传递到输出(因此第一行以下的空单元格不会被篡改)。