Skip to content

Samples

Each section below is one run of fill, laid out as three tabs.

Tab What it holds
Template The workbook the run opens
Input The data merged into it
Expected Under Filled — the workbook the run wrote
Error Under Rejected — the exception raised instead

Filled

asserts

{
  "qty": 3,
  "name": "x",
  "ok": false,
  "d": {"$date": "2026-08-17"},
  "t": {"$time": "09:30"},
  "dt": {"$datetime": "2026-08-17T09:30"}
}

errors

{
  "qty": "three",
  "name": 1,
  "ok": "yes",
  "d": {"$datetime": "2026-08-17T09:30"},
  "t": 5,
  "dt": {"$date": "2026-08-17"},
  "profile": {"age": 30},
  "scores": [1],
  "items": ["a", "b", "c"],
  "meetingAt": {"$datetime": "2026-08-17T09:30+00:00"},
  "customer": null,
  "title": "April",
  "first": "Alice",
  "tags": ["a", "b"],
  "labels": ["a", "b"]
}

expansion

{
  "items": [
    {"name": "apple", "qty": 2, "price": 100},
    {"name": "orange", "qty": 3, "price": 50},
    {"name": "banana", "qty": 1, "price": 80}
  ],
  "departments": [
    {"name": "Sales", "total": 500, "staff": [
      {"name": "Alice", "salary": 300, "joinedAt": {"$date": "2020-04-01"}},
      {"name": "Bob", "salary": 200, "joinedAt": {"$date": "2021-05-01"}}
    ]},
    {"name": "Dev", "total": 400, "staff": [
      {"name": "Carol", "salary": 400, "joinedAt": {"$date": "2022-06-01"}}
    ]},
    {"name": "Support", "total": 900, "staff": [
      {"name": "Dave", "salary": 350, "joinedAt": {"$date": "2023-07-01"}},
      {"name": "Eve", "salary": 320, "joinedAt": {"$date": "2024-08-01"}},
      {"name": "Frank", "salary": 230, "joinedAt": {"$date": "2025-09-01"}}
    ]}
  ],
  "employees": [
    {"name": "Alice", "tasks": ["A", "B"]},
    {"name": "Bob", "tasks": ["C"]},
    {"name": "Carol", "tasks": ["D", "E", "F"]}
  ],
  "cdepts": [
    {"name": "Sales", "total": 500, "staff": [{"name": "Alice"}, {"name": "Bob"}]},
    {"name": "Dev", "total": 400, "staff": [{"name": "Carol"}]},
    {"name": "Support", "total": 900, "staff": [{"name": "Dave"}, {"name": "Eve"}, {"name": "Frank"}]}
  ],
  "l3depts": [
    {"name": "Sales", "teams": [
      {"name": "Team1", "staff": ["Alice", "Bob"]},
      {"name": "Team2", "staff": ["Carol"]}
    ]},
    {"name": "Support", "teams": [
      {"name": "Team3", "staff": ["Dave", "Eve"]},
      {"name": "Team4", "staff": ["Frank"]}
    ]}
  ],
  "dates": ["8/1", "8/2", "8/3"],
  "temperatures": [[36.2, 36.5, 36.9], [36.1, 36.8, 36.4], [36.3, 36.6, 36.7]],
  "soloItems": [{"name": "only", "qty": 1, "price": 10}],
  "rzitems": [],
  "czitems": [],
  "rrzo": [],
  "rczo": [],
  "crzo": [],
  "cczo": [],
  "rrzi": [
    {"name": "Sales", "total": 500, "staff": [
      {"name": "Alice", "salary": 300, "joinedAt": {"$date": "2020-04-01"}},
      {"name": "Bob", "salary": 200, "joinedAt": {"$date": "2021-05-01"}}
    ]},
    {"name": "Dev", "total": 400, "staff": []}
  ],
  "rczi": [
    {"name": "Sales", "staff": [{"name": "Alice"}, {"name": "Bob"}]},
    {"name": "Dev", "staff": []}
  ],
  "crzi": [{"name": "Alice", "tasks": ["A", "B"]}, {"name": "Bob", "tasks": []}],
  "cczi": [
    {"name": "Sales", "total": 500, "staff": [{"name": "Alice"}, {"name": "Bob"}]},
    {"name": "Dev", "total": 400, "staff": []}
  ],
  "plannedDepts": [{"name": "Sales", "staff": []}, {"name": "Dev", "staff": []}],
  "idleEmployees": [{"name": "Alice", "tasks": []}, {"name": "Bob", "tasks": []}],
  "zrdates": [],
  "zrtemps": [],
  "zcemps": [],
  "zctemps": [[], [], []],
  "mnames": ["a", "b", "c"],
  "mprices": [100, 200],
  "cmnames": ["a", "b", "c"],
  "cmprices": [100, 200],
  "rrmi": [{"name": "Sales", "staff": ["Alice", "Bob", "Carol"], "bonus": [10, 20]}],
  "rcmi": [{"name": "Sales", "staff": ["Alice", "Bob", "Carol"], "bonus": [10, 20]}],
  "crmi": [{"name": "Sales", "staff": ["Alice", "Bob", "Carol"], "bonus": [10, 20]}],
  "ccmi": [{"name": "Sales", "staff": ["Alice", "Bob", "Carol"], "bonus": [10, 20]}],
  "urdepts": [{"name": "Sales"}, {"name": "Dev"}],
  "notes": ["note1", "note2"],
  "rcur": [{"name": "Sales"}, {"name": "Dev"}],
  "crur": [{"name": "Sales"}, {"name": "Dev"}],
  "ccur": [{"name": "Sales"}, {"name": "Dev"}]
}

follow

{
  "fitems": [
    {"name": "apple", "qty": 2, "price": 100},
    {"name": "orange", "qty": 3, "price": 50},
    {"name": "banana", "qty": 1, "price": 80}
  ],
  "femps": [
    {"name": "Alice", "dept": "S"},
    {"name": "Bob", "dept": "D"},
    {"name": "Carol", "dept": "S"}
  ],
  "fdepts": [
    {"name": "Sales", "total": 500, "staff": [
      {"name": "Alice", "salary": 300, "joinedAt": {"$date": "2020-04-01"}},
      {"name": "Bob", "salary": 200, "joinedAt": {"$date": "2021-05-01"}}
    ]},
    {"name": "Dev", "total": 400, "staff": [
      {"name": "Carol", "salary": 400, "joinedAt": {"$date": "2022-06-01"}}
    ]}
  ],
  "frcs": [
    {"name": "Sales", "staff": [{"name": "Alice"}, {"name": "Bob"}]},
    {"name": "Dev", "staff": [{"name": "Carol"}]}
  ],
  "fcrs": [{"name": "Alice", "tasks": ["A", "B"]}, {"name": "Bob", "tasks": ["C"]}],
  "fccs": [
    {"name": "Sales", "total": 500, "staff": [{"name": "Alice"}, {"name": "Bob"}]},
    {"name": "Dev", "total": 400, "staff": [{"name": "Carol"}]}
  ]
}

formulas

{
  "rbitems": [
    {"name": "apple", "qty": 2, "price": 100},
    {"name": "orange", "qty": 3, "price": 50},
    {"name": "banana", "qty": 1, "price": 80}
  ],
  "hfx": [{"qty": 2, "price": 100}, {"qty": 3, "price": 50}, {"qty": 1, "price": 80}],
  "vg": [{"qty": 1}, {"qty": 2}, {"qty": 3}],
  "cg": [{"qty": 1}, {"qty": 2}, {"qty": 3}],
  "voitems": [{"name": "a", "qty": 1}, {"name": "b", "qty": 2}, {"name": "c", "qty": 3}],
  "hoitems": [{"qty": 1}, {"qty": 2}, {"qty": 3}],
  "vfdepts": [
    {"name": "Sales", "staff": [{"name": "Alice", "salary": 300}, {"name": "Bob", "salary": 200}]},
    {"name": "Dev", "staff": [{"name": "Carol", "salary": 400}]}
  ],
  "hfdepts": [
    {"name": "Sales", "staff": [{"name": "Alice", "salary": 300}, {"name": "Bob", "salary": 200}]},
    {"name": "Dev", "staff": [{"name": "Carol", "salary": 400}]}
  ],
  "rcs": [{"name": "Sales", "staff": [1, 2]}, {"name": "Dev", "staff": [3]}],
  "crs": [{"name": "Alice", "tasks": [1, 2]}, {"name": "Bob", "tasks": [3]}]
}

images

{
  "img": {"alt": "logo", "data": {"$bytes": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA8UlEQVR4AaSTyxKCMAxFA4OPnWvf//938lDHFZ5bKGOltczoNDZJb07TAmVv1v9jpQ2/rjArlpqZbbEXZh6wp4tWiZyh26Cp2UyQAUDQkcxCvoupGQBycpBYser8EeTbCDkgblxi/CNe4zasu7bxpxEAlEWkuzhS5CDMKm7J6+ySBDYDaBXxJyRZLG0UoAVMj0m7aiaMjyiAtlfI9W4IcCKuiaNjBkCs4jvH0Nl1sbqLM/koJAAgCor9lsCSkAmQKs5BHIDiCuGDnVzb+NHBujq5oL95gQMQPFlU+7i/BzrdxdVDPKAisfizZgt1sGO2NwAAAP//5rLMuQAAAAZJREFUAwAD/nMBaJiA+QAAAABJRU5ErkJggg=="}},
  "img2": {"data": {"$bytes": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAUElEQVR4AeySwQoAIAhDZ///z8UaeTIhu5pIxvIdpgPzLwZ4DHFQY8aqURKAVTEbAMiD2yiPsYkuwPlYuAWw3oOCd94iE/35XgiQzHkjE30BAAD//wGmD9AAAAAGSURBVAMAvuxQASaLFsEAAAAASUVORK5CYII="}},
  "a": {"title": "Details", "url": "https://example.com"},
  "noimg": {"data": null},
  "blankImage": {"data": {"$bytes": ""}}
}

layout

{
  "products": [{"name": "apple", "desc": "red fruit"}, {"name": "banana", "desc": "yellow fruit"}],
  "quarters": [{"name": "Q1", "desc": "Jan-Mar"}, {"name": "Q2", "desc": "Apr-Jun"}],
  "fruits": ["grape", "melon"],
  "seasons": ["spring", "summer"],
  "tasks": ["design", "build", "test"],
  "members": ["Alice", "Bob"],
  "months": ["Apr", "May", "Jun"],
  "owners": ["Carol", "Dave"],
  "metrics": ["sales", "profit"],
  "regions": ["East", "West", "North"]
}

{
  "a": {"title": "Details", "url": "https://example.com"},
  "nolink": {"title": "t", "url": null},
  "draft": {"title": "Draft", "url": ""}
}

markers

{
  "縦部署": [{"名前": "営業"}, {"名前": "開発"}],
  "横部署": [{"名前": "営業"}, {"名前": "開発"}],
  "ndates": ["8/1"],
  "nemps": ["Alice", "Bob"],
  "ntemps": [[36.2, 36.5]],
  "wvitems": ["a", "b"],
  "wcitems": ["a", "b"],
  "vsitems": ["a", "b"],
  "hsitems": ["a", "b"],
  "grid": [[1, 2], [3, 4]],
  "vcitems": ["a", "b"],
  "hritems": ["a", "b"]
}

preserve

{
  "pname": "Alice"
}

sheet-2d

{
  "sheets": [
    {"name": "A", "emps": ["Alice"], "dates": ["8/1"], "temps": [[36.2]]},
    {"name": "B", "emps": ["Bob", "Carol"], "dates": ["8/1", "8/2"], "temps": [[36.1, 36.8], [36.0, 36.4]]}
  ]
}

sheet-band-c

{
  "sheets": [
    {"name": "A", "items": ["x", "y"]},
    {"name": "B", "items": ["z"]}
  ]
}

sheet-band-r

{
  "sheets": [
    {"name": "A", "items": ["x", "y"]},
    {"name": "B", "items": ["z"]}
  ]
}

sheet-insert-position

{
  "sheets": [
    {"name": "April", "customer": "ACME"},
    {"name": "May", "customer": "Globex"}
  ]
}

sheet-nest-cc

{
  "sheets": [
    {"name": "A", "departments": [{"name": "Sales", "staff": ["Alice"]}]},
    {"name": "B", "departments": [{"name": "Dev", "staff": ["Bob", "Carol"]}]}
  ]
}

sheet-nest-rr

{
  "sheets": [
    {"name": "A", "departments": [{"name": "Sales", "staff": ["Alice"]}]},
    {"name": "B", "departments": [{"name": "Dev", "staff": ["Bob", "Carol"]}]}
  ]
}

sheet-repeat-cell

{
  "sheets": [
    {"name": "April", "customer": "ACME"},
    {"name": "May", "customer": "Globex"}
  ]
}

sheet-repeat-name

{
  "sheets": [
    {"name": "April", "customer": "ACME"},
    {"name": "May", "customer": "Globex"}
  ]
}

sheet-zero-items

{
  "sheets": []
}

values

{
  "customer": {"name": "Alice"},
  "first": "Alice",
  "last": "Smith",
  "qty": 3,
  "d": {"$date": "2026-08-17"},
  "t": {"$time": "09:30"},
  "dt": {"$datetime": "2026-08-17T09:30"},
  "ok": true,
  "memo": "line1\nline2",
  "vspace": "税込 ",
  "missing": {"name": null},
  "na": null,
  "nb": "x",
  "items": ["a", "b", "c"],
  "vfitems": ["a", "b", "c"],
  "hfitems": ["a", "b", "c"],
  "title": "April",
  "author": "Alice",
  "note": "memo",
  "tip": "hint",
  "msg": "enter a value"
}

Rejected

error-prop-name-bang

{"a!b": 1}

DataError

property name "a!b" contains a forbidden character: "!"

error-prop-name-brace-close

{"a}b": 1}

DataError

property name "a}b" contains a forbidden character: "}"

error-prop-name-brace-open

{"a{b": 1}

DataError

property name "a{b" contains a forbidden character: "{"

error-prop-name-bracket-close

{"a]b": 1}

DataError

property name "a]b" contains a forbidden character: "]"

error-prop-name-bracket-open

{"a[b": 1}

DataError

property name "a[b" contains a forbidden character: "["

error-prop-name-colon

{"a:b": 1}

DataError

property name "a:b" contains a forbidden character: ":"

error-prop-name-dollar

{"a$b": 1}

DataError

property name "a$b" contains a forbidden character: "$"

error-prop-name-dot

{"a.b": 1}

DataError

property name "a.b" contains a forbidden character: "."

error-prop-name-hash

{"a#b": 1}

DataError

property name "a#b" contains a forbidden character: "#"

error-prop-name-paren-close

{"a)b": 1}

DataError

property name "a)b" contains a forbidden character: ")"

error-prop-name-paren-open

{"a(b": 1}

DataError

property name "a(b" contains a forbidden character: "("

error-root-array

["a", "b"]

DataError

input root must be an object, got array

error-root-bool

true

DataError

input root must be an object, got bool

error-root-null

null

DataError

input root must be an object, got null

error-root-num

42

DataError

input root must be an object, got num

error-root-str

"x"

DataError

input root must be an object, got str