如何合并多个 CSV 的行和列
例题描述
现有3个CSV文件book1.csv、book2.csv、book3.csv,用Excel打开如下图所示:
现在需要把它们的行和列合并成一个文件,如下图所示:
实现步骤
1、 运行集算器
可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。
2、 编写脚本:
把代码列出来看得清楚点:
A |
|
1 |
>dir="E:/csv/" |
2 |
=file(dir+"book1.csv").import@tc() |
3 |
=file(dir+"book2.csv").import@tc() |
4 |
=file(dir+"book3.csv").import@tc() |
5 |
=join@f(A2:c1,Id;A3:c2,Id;A4:c3,Id) |
6 |
=A5.new([c1.Id,c2.Id,c3.Id].nvl():Id,[c1.one,c2.one,c3.one].nvl(),[c1.two,c2.two,c3.two].nvl(),[c1.three,c2.three].nvl(),c2.four:four,c3.yes:yes,c3.no:no,c3.maybe:maybe) |
7 |
=file(dir+"merged.csv").export@tc(A6) |
A1 定义文件所在的目录变量dir
A2 读入book1.csv文件数据,选项@t表示首行是列标题,c表示列数据间用逗号分隔
A5 将A2、A4、A6按照Id进行全连接,并分别命名为c1、c2、c3,选项@f表示全连接,找不到匹配Id时与null对应
A6 从A5中构造新的数据集,[c1.Id,c2.Id,c3.Id].nvl():Id表示从3个表的Id中选出不是null的值,新列名为Id;其余类同
A7 把A6保存到文件merged.csv,选项@t表示首行是列标题,c表示列数据间用逗号分隔
3、 按F9运行程序,运行结束后打开merged.csv可以看到生成的目标表格。
【附件】 mergecsv.zip
英文版
英文已更新