常见的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脚本:
| 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是序列的序列
686

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



