リレーショナルデータベース的に複数のエクセルシートを読み込んで1つのJSONにしたい
私なら、PowerQuery を使って結合し、JSONに変換すると思います。
参考:
ExcelでPowerQueryを使ってデータを結合して出力する - Qiita
テーブルをバイナリ(JSON)化したり、テーブルに戻したり - Qiita
追記
質問を閉じたられたようですが、作ってみたのでせっかくですから挙げておきます。
M
1let
2 path = Excel.CurrentWorkbook(){[Name="path"]}[Content][path]{0},
3 ソース = Excel.Workbook(File.Contents(path), null, true),
4 Sheet1_Sheet = ソース{[Item="Sheet3",Kind="Sheet"]}[Data],
5 昇格されたヘッダー数 = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
6 変更された型 = Table.TransformColumnTypes(昇格されたヘッダー数,{{"モデル", type text}, {"サイズ", Int64.Type}, {"ストローク", Int64.Type}}),
7 グループ化された行 = Table.Group(変更された型, {"モデル", "サイズ"}, {{"ストローク", each _[ストローク], type table}}),
8 グループ化された行1 = Table.Group(グループ化された行, {"モデル"}, {{"サイズ", each Record.FromList( [ストローク], List.Transform([サイズ], each Number.ToText(_)) ), type table}}),
9 ピボットされた列 = Table.Pivot(グループ化された行1, List.Distinct(グループ化された行1[モデル]), "モデル", "サイズ"),
10 カスタム1 = Json.FromValue(ピボットされた列),
11 インポートされたテキスト = Table.FromColumns({Lines.FromBinary(カスタム1,null,null,932)})
12in
13 インポートされたテキスト
サンプルを置いておきます。
https://yahoo.jp/box/Yya1D6
↓作成されたJSONはこちら。
JSON
1[{"DDF":{"10":[100,110,120,130,150],"20":[100,110,120,130,150],"30":[100,110,120,130,150],"40":[100,110,120,130,150],"50":[100,110,120,130,150]},"TMG":{"10":[100,110,120,130,150],"20":[100,110,120,130,150],"30":[100,110,120,130,150],"40":[100,110,120,130,150],"50":[100,110,120,130,150]},"AMB":{"10":[100,110,120,130,150],"20":[100,110,120,130,150],"30":[100,110,120,130,150],"40":[100,110,120,130,150],"50":[100,110,120,130,150]}}]
追記
少しコードを修正しました。
M言語はよくわからないので、変なことをしてたらすみません。
M
1let
2 path = Excel.CurrentWorkbook(){[Name="path"]}[Content][path]{0},
3 ソース = Excel.Workbook(File.Contents(path), null, true),
4 Sheet1_Sheet = ソース{[Item="Sheet3",Kind="Sheet"]}[Data],
5 昇格されたヘッダー数 = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
6 変更された型 = Table.TransformColumnTypes(昇格されたヘッダー数,{{"モデル", type text}, {"サイズ", type text}, {"ストローク", type text}}),
7 グループ化された行 = Table.Group(変更された型, {"モデル", "サイズ"}, {{"ストローク", each _[ストローク], type table}}),
8 グループ化された行1 = Table.Group(グループ化された行, {"モデル"}, {{"サイズ", each Record.FromList( [ストローク], [サイズ] ), type table}}),
9 ピボットされた列 = Record.FromList(グループ化された行1[サイズ], グループ化された行1[モデル]),
10 カスタム1 = Json.FromValue(ピボットされた列),
11 インポートされたテキスト = Table.FromColumns({Lines.FromBinary(カスタム1,null,null,932)})
12in
13 インポートされたテキスト