横向扩展出多组 N 列

 

举例

Excel文件book1.xlsx有某浴室某日顾客进出时间登记表,部分数据如下图所示:

..

现在要统计从18:0022:00间每小时时间段内的顾客情况,此时间段内某顾客还在则填1,否则不填,如下图所示:

..

编写SPL脚本:


A

1

=file("e:/work/book1.xlsx").xlsopen()

2

=A1.xlsimport@t(Name,Sex,Enter,Leave;,2)

3

=create(${(["Male","Female"]*4).string()})

4

=time("18:00","HH:mm")

5

=A2.run(A3.insert(0),4.run(t1=elapse@s(A4,(~-1)*3600),t2=elapse@s(A4,~*3600),k=if(A2.Sex=="M",~*2-1,~*2),if(time(A2.Enter)<t2   && time(A2.Leave)>t1,A3(A2.#).field(k,1))))

6

=A1.xlscell("F3",1;A3.export())

7

=file("e:/work/book1.xlsx").xlswrite(A1)

A1   打开book1.xlsx文件为Excel对象

A2   A1的第一个Sheet中读入Name,Sex,Enter,Leave四列数据,从第2行开始读,选项@t表示读入的第1行为列标题

A3   创建由4Male,Female列组成的序表

A4   开始时间18:00

A5   循环A2的每一行,在A3中追加一条新记录,循环4个时间段,算出本时段开始时间t1和结束时间t2,根据顾客性别算出要填写的字段序号k,如果顾客本时段还在浴室内,则在A3的当前行第k个字段填写1

A6   A1的第1SheetF3单元格填写A3序表转成的字符串,会依次把A3中的单元格数据填入ExcelF3的后续单元格中。

A7   A1Excel对象保存到文件book1.xlsx