如何把有合并格的分组 Excel 转换成 Json
现有Excel文件json.xlsx,如下所示:
EMPId |
Name |
Date |
Periodname |
TimUnitDuration |
charge entry |
|
Type |
Price |
|||||
21 |
abc |
2015/12/31 |
15 data |
15 |
fixed |
100 |
45 data |
45 |
fixed |
100 |
|||
42 |
def |
2015/12/31 |
15 data |
15 |
fixed |
100 |
30 data |
30 |
fixed |
100 |
|||
45 data |
45 |
fixed |
100 |
需要将这样带有合并格的分组Excel中的数据转为json格式,结果如下:
[
{
"EMPId":21,
"Name":"abc",
"Date":"2015-12-31",
"Period":[
{
"Periodname":"15 data",
"TimUnitDuration":15,
"ChargeEntry":[
{
"Type":"fixed",
"Price":100
}
]
},
{
"Periodname":"45 data",
"TimUnitDuration":45,
"ChargeEntry":[
{
"Type":"fixed",
"Price":100
}
]
}
]
},
{
"EMPId":42,
"Name":"def",
"Date":"2015-12-31",
"Period":[
{
"Periodname":"15 data",
"TimUnitDuration":15,
"ChargeEntry":[
{
"Type":"fixed",
"Price":100
}
]
},
{
"Periodname":"30 data",
"TimUnitDuration":30,
"ChargeEntry":[
{
"Type":"fixed",
"Price":100
}
]
},
{
"Periodname":"45 data",
"TimUnitDuration":45,
"ChargeEntry":[
{
"Type":"fixed",
"Price":100
}
]
}
]
}
]
借助集算器可以很方便地完成这件事。
集算器安装包可去润乾网站下载集算器职场版,运行时需要一个授权,免费版本就够用。
1. 在集算器中编写脚本p1.dfx:
A |
|
1 |
=file("json.xlsx").xlsimport@w(;,3) |
2 |
=A1.group@i(~(1)) |
3 |
=A2.(~.(~.(if(~==null,A2.~(1)(#),~)))) |
4 |
=create(EMPId,Name,Date,Periodname,TimUnitDuration,CT,CP) |
5 |
=A3.(~.(A4.record(~))) |
6 |
=A4.group(#1,#2,#3;~.group(Periodname,TimUnitDuration;~.new(CT:Type,CP:Price):ChargeEntry):Period) |
7 |
=json(A6) |
A1 从第三行开始,读取 json.xlsx 数据,选项@w表示将数据读成序列的序列。
A2 若每个序列内第一个值不为空,则新分一组
A3 将合并格的空值补足
A4 创建空序表
A5 将数据插入序表
A6 按 Excel 逻辑对数据分组
A7 序表转 json
2. 执行脚本,A7 中的数据是需要的结果。
英文版