将某列中的逗号分隔串拆分到多行

例题描述和简单分析

有 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 脚本》

问答搜集

https://stackoverflow.com/questions/61429514/i-need-to-print-the-excel-data-from-two-columns-in-sequeal-fromat-first-column