如何把有合并格的分组 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 中的数据是需要的结果。
英文版