本帖最后由 mafia 于 2021-4-23 10:02 编辑
例题描述
有课程起始日期表book1.xlsx,数据如下图所示:
现在需要对课程的开始日期排序,最后列出各课程的最近一次起始日期,即上图中的颜色格数据,目标表格如下图所示:
数据表与目标表都与常见的行记录表相反,它是每列为一条记录。
实现步骤
1、 编写esProc SPL脚本:
| A | 1 | =file("E:/colsort/book1.xlsx").xlsimport@w() | 2 | =transpose(A1) | 3 | =create(${A2(1).concat(",")}).record(A2.delete(1).conj()) | 4 | =A3.group(Courses).(~.maxp(date(Date,"dd/MM/yyyy"))) | 5 | =A4.(~.array()).insert(1,[A4.fname()]) | 6 | =transpose(A5) | 7 | =file("E:/colsort/book2.xlsx").xl**port@w(A6) |
A1 读入book1.xlsx文件数据,选项@w表示将数据读成序列的序列,如下图所示
A2 把A1的序列进行行列互换,结果如下图所示
A3 用A2中的第1个成员为列名构造序表,其它成员为记录追加到序表中
A4 A3中的数据按Courses分组后,取出各组 Date 最大的记录
A5 用A4的各行数据组成序列,并把列名插入到序列开头,结果如下图所示
A6 把A5的序列进行行列转换
A7 将结果保存book2.xlsx,选项@w表示要输出的数据是序列的序列
2、 按F9运行程序,运行结束后打开book2.xlsx可以看到生成的目标表格。 |