将某列中的逗号分隔串拆分到多行
例题描述和简单分析
有 Excel 文件 Mydata.xlsx,数据如下所示:
RegTypes |
Options |
001 |
AFD,PB_P,PB_DL,EGS_D1,EGS_D2 |
10A |
AFD,PB_P,PB_DL,EGS_D1,EGS_D2 |
RegTypes列是单值,Options 列是逗号分隔的字符串,现在要把 Options 列拆分成多行,和 RegTypes 列一同输出成二维表,结果如下:
RegTypes |
Option |
001 |
AFD |
001 |
PB_P |
001 |
PB_DL |
001 |
EGS_D1 |
001 |
EGS_D2 |
10A |
AFD |
10A |
PB_P |
10A |
PB_DL |
10A |
EGS_D1 |
10A |
EGS_D2 |
解法及简要说明
在集算器中编写脚本 p1.dfx,如下所示:
A |
|
1 |
=file("Mydata.xlsx").xlsimport@t() |
2 |
=A1.news(Options.split@c();RegTypes,~:Option) |
3 |
=file("result.xlsx").xlsexport@t(A2) |
简要说明:
A1 Excel读成序表
A2 循环 A1 每行,把 Options 按逗号拆分成序列,按每个序列成员转变成一个新行,新行由 2 列组成:第 1 列是RegTypes,第 2 列是拆分出的序列的当前成员 (~ 表示),命名为Option
A3 结果导出至 result.xlsx
JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》。
英文版