举例
有 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
686

被折叠的 条评论
为什么被折叠?



