把数据表横向填入列

 

常见的Excel数据表,都是数据记录位于行方向,即记录数据都在同一行。但也有一些特殊的Excel表格,数据记录是位于列方向。要生成这种表格,需要先将序表列标题和数据进行行列转置,然后用SPL中的xlsexport@w函数来保存。

 

举例

有财务数据表book1.xlsx,数据如下图所示:

..

现在需要重新生成如下图所示的表格:

..

编写SPL脚本:


A

1

=T("E:/work/book1.xlsx")

2

=[A1.fname()]|A1.(~.array())

3

=transpose(A2)

4

=file("E:/work/book2.xlsx").xlsexport@w(A3)

A1   读入book1.xlsx文件数据成为序表

A2   A1的字段名序列与各行记录值序列合并成序列的序列

A3   A2进行行列互换

A4   A3保存到文件book2.xlsx,选项@w表示要写出的对象A3是序列的序列

 

如果只是把表格转过来,也可以不用读成序表式的结构化数据,例如编写SPL脚本:


A

1

=file("E:/work/book1.xlsx").xlsimport@w()

2

=transpose(A1)

3

=file("E:/work/book2.xlsx").xlsexport@w(A2)

A1   读入book1.xlsx文件数据,选项@w表示将数据读成序列的序列

A2   A1的序列进行行列互换

A3   A2保存到文件book2.xlsx,选项@w表示要写出的对象A2是序列的序列