举例
有 Excel 文件 Book1.xlsx,数据如下所示:
class | name | Math | English | PE |
one | Jack | 89 | 78 | 83 |
Tom | 90 | 60 | 99 | |
Jerry | 76 | 88 | 62 | |
Kate | 66 | 90 | 85 | |
two | Jim | 87 | 60 | 76 |
Alice | 100 | 99 | 97 | |
Rebecca | 75 | 76 | 88 | |
three | Cindy | 63 | 80 | 72 |
Kitty | 82 | 50 | 74 | |
Lucy | 40 | 100 | 63 |
现在需要从三个班的某次测试成绩,汇总出各班的人数、所有学科(包含数学、英语、体育)的总成绩:
calss | num | total |
one | 4 | 966 |
two | 3 | 758 |
three | 3 | 624 |
编写 SPL 脚本:
方法1:结构化数据
A | |
1 | =file("Book1.xlsx").xlsimport@t() |
2 | =A1.groups@i(class;count(1):num,sum(~.array().to(3,).sum()):total) |
3 | =file("result.xls").xlsexport@t(A2) |
A1 读取 Excel 数据
A2 按班级分组,计算每个班级的人数 num,所有学科(3 至 5 列)的总成绩 total,其中${to(3,5).("#"/~).concat("+")}拼出串:#3+#4+#5
A3 将结果 A2 导出至 result.xlsx
方法2:二维数组
A | |
1 | =file("Book1.xlsx").xlsimport@w(;,2:) |
2 | =A1.groups@i(~(1):calss;count(1):num,sum(~.to(3,).sum()):total) |
3 | =file("result.xls").xlsexport@t(A2) |
A1 读取 Excel 数据,从第二行开始读,读成一个二维数组
A2 按班级(第一列)分组,求每个班级的人数 num,所有学科(第三列往后)的总成绩 total
A3 将结果 A2 导出至 result.xlsx