举例有 Excel 文件 Book1.xlsx,数据如下所示:
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 |
需要将区域内的数据打乱次序(整片、行内、列内)
编写 SPL 脚本:
| A |
1 | =file("Book1.xlsx").xlsimport@w() |
2 | /整片打乱次序 |
3 | =A1.conj().sort(rand()).group(#%5) |
4 | =file("total.xlsx").xlsexport@w(A3) |
5 | /行内打乱次序 |
6 | =A1.(~.sort(rand())) |
7 | =file("row.xlsx").xlsexport@w(A6) |
8 | /列内打乱次序 |
9 | =transpose(A1).(~.sort(rand())) |
10 | =transpose(A9) |
11 | =file("col.xlsx").xlsexport@w(A10) |
A1 读取 excel 文件内容,读成序列的序列
A2 注释
A3 将序列的序列合并为一个序列,打乱次序后,再按原序列的序列将新序列分组
A4 整片打乱次序导出至total.xlsx,结果如下:
11 | 12 | 20 | 10 |
4 | 14 | 5 | 1 |
15 | 16 | 8 | 7 |
9 | 13 | 2 | 3 |
17 | 19 | 18 | 6 |
A5 注释
A6 每行的数据打乱次序
A7 行内打乱次序导出至 row.xlsx,结果如下:
4 | 2 | 3 | 1 |
6 | 5 | 7 | 8 |
9 | 12 | 10 | 11 |
16 | 14 | 15 | 13 |
18 | 20 | 17 | 19 |
A8 注释
A9 把这片数据转置后再行内打乱次序
A10 A9的结果再转置
A11 列内打乱次序导出至 col.xlsx,结果如下:
13 | 6 | 7 | 8 |
9 | 18 | 19 | 12 |
1 | 2 | 15 | 4 |
5 | 14 | 3 | 20 |
17 | 10 | 11 | 16 |