Struct in map
Excel nesting specification of struct in map.
Nested in vertical-map
Struct in vertical-map
A worksheet ItemConf
in HelloWorld.xlsx:
ID | ItemID | ItemNum |
---|---|---|
map<int32, Reward> | {Item}int32 | int32 |
Reward’s ID | Item’s ID | Item’s Num |
1 | 1 | 10 |
2 | 2 | 20 |
3 |
Generated:
hello_world.proto
// --snip--
option (tableau.workbook) = {name:"HelloWorld.xlsx"};
message ItemConf {
option (tableau.worksheet) = {name:"ItemConf" namerow:1 typerow:2 noterow:3 datarow:4};
map<int32, Reward> reward_map = 1 [(tableau.field) = {key:"ID" layout:LAYOUT_VERTICAL}];
message Reward {
int32 id = 1 [(tableau.field) = {name:"ID"}];
Item item = 2 [(tableau.field) = {name:"Item"}];
message Item {
int32 id = 1 [(tableau.field) = {name:"ID"}];
int32 num = 2 [(tableau.field) = {name:"Num"}];
}
}
}
ItemConf.json
{
"rewardMap": {
"1": {
"id": 1,
"item": {
"id": 1,
"num": 10
}
},
"2": {
"id": 2,
"item": {
"id": 2,
"num": 20
}
},
"3": {
"id": 3,
"item": null
}
}
}
Predefined-struct in vertical-map
Item
in common.proto is predefined as:
message Item {
int32 id = 1 [(tableau.field) = {name:"ID"}];
int32 num = 2 [(tableau.field) = {name:"Num"}];
}
A worksheet ItemConf
in HelloWorld.xlsx:
ID | ItemID | ItemNum |
---|---|---|
map<int32, Reward> | {.Item}int32 | int32 |
Reward’s ID | Item’s ID | Item’s Num |
1 | 1 | 10 |
2 | 2 | 20 |
3 |
Generated:
hello_world.proto
// --snip--
import "common.proto";
option (tableau.workbook) = {name:"HelloWorld.xlsx"};
message ItemConf {
option (tableau.worksheet) = {name:"ItemConf" namerow:1 typerow:2 noterow:3 datarow:4};
map<int32, Reward> reward_map = 1 [(tableau.field) = {key:"ID" layout:LAYOUT_VERTICAL}];
message Reward {
int32 id = 1 [(tableau.field) = {name:"ID"}];
protoconf.Item item = 2 [(tableau.field) = {name:"Item"}];
}
}
ItemConf.json
{
"rewardMap": {
"1": {
"id": 1,
"item": {
"id": 1,
"num": 10
}
},
"2": {
"id": 2,
"item": {
"id": 2,
"num": 20
}
},
"3": {
"id": 3,
"item": null
}
}
}
Incell-struct in vertical-map
A worksheet ItemConf
in HelloWorld.xlsx:
ID | Item |
---|---|
map<int32, Reward> | {int32 ID, int32 Num}Item |
Reward’s ID | Item’s info |
1 | 1,100 |
2 | 2,200 |
3 |
Generated:
hello_world.proto
// --snip--
option (tableau.workbook) = {name:"HelloWorld.xlsx"};
message ItemConf {
option (tableau.worksheet) = {name:"ItemConf" namerow:1 typerow:2 noterow:3 datarow:4};
map<int32, Reward> reward_map = 1 [(tableau.field) = {key:"ID" layout:LAYOUT_VERTICAL}];
message Reward {
int32 id = 1 [(tableau.field) = {name:"ID"}];
Item item = 2 [(tableau.field) = {name:"Item" span:SPAN_INNER_CELL}];
message Item {
int32 id = 1 [(tableau.field) = {name:"ID"}];
int32 num = 2 [(tableau.field) = {name:"Num"}];
}
}
}
ItemConf.json
{
"rewardMap": {
"1": {
"id": 1,
"item": {
"id": 1,
"num": 100
}
},
"2": {
"id": 2,
"item": {
"id": 2,
"num": 200
}
},
"3": {
"id": 3,
"item": null
}
}
}