Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

205 lines
5.9 KiB
JSON

{
"$schema": "../_schema.json",
"format": "xlsx",
"element": "table",
"elementAliases": ["listobject"],
"parent": "sheet",
"operations": {
"add": true,
"set": true,
"get": true,
"query": true,
"remove": true
},
"paths": {
"positional": [
"/SheetName/table[N]"
]
},
"note": "'ref' (alias 'range') required: cell range like 'A1:C10'. Rejects ranges that overlap existing tables. Names sanitized; style validated against built-in/custom whitelist. QUERY: `query table` returns real ListObjects (type=table) PLUS heuristically detected table-shaped blocks (type=detectedtable, stable=false, honest range path like /Sheet1/A1:D10 — never a fake /table[N]). Detection is strict/high-precision: a block qualifies only with a contiguous >=2-column non-numeric-text header row, >=1 data row below, and no overlap with a real ListObject. Use `query listobject` to get ONLY real ListObjects (no detection). add/set/get/remove operate exclusively on real ListObjects via /table[N]; detected blocks are query-only and addressed by their range path.",
"extends": [
"_shared/table",
"_shared/table.pptx-xlsx"
],
"properties": {
"ref": {
"type": "string",
"description": "cell range reference (A1:C10). Required. Alias: range.",
"aliases": [
"range"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop ref=A1:C10"
],
"readback": "range string",
"enforcement": "report"
},
"displayName": {
"type": "string",
"description": "Excel UI display name. Defaults to name.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop displayName=SalesData"
],
"readback": "display name",
"enforcement": "report"
},
"headerRow": {
"type": "bool",
"description": "show header row. Alias: showHeader.",
"aliases": [
"showHeader"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop headerRow=true"
],
"readback": "true/false",
"enforcement": "report"
},
"totalRow": {
"type": "bool",
"description": "show total row. Aliases: totalsRow, showTotals.",
"aliases": [
"totalsRow",
"showTotals"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop totalRow=true"
],
"readback": "true/false",
"enforcement": "report"
},
"autoExpand": {
"type": "bool",
"description": "auto-expand range downward through contiguous non-empty rows at Add time.",
"add": true,
"set": false,
"get": false,
"examples": [
"--prop autoExpand=true"
],
"readback": "affects range at Add time",
"enforcement": "report"
},
"showFirstColumn": {
"type": "bool",
"description": "highlight the first column with the table style. Alias: firstColumn.",
"aliases": [
"firstColumn"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop showFirstColumn=true"
],
"readback": "true/false",
"enforcement": "report"
},
"showLastColumn": {
"type": "bool",
"description": "highlight the last column with the table style. Alias: lastColumn.",
"aliases": [
"lastColumn"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop showLastColumn=true"
],
"readback": "true/false",
"enforcement": "report"
},
"showRowStripes": {
"type": "bool",
"description": "alternate-row banding from the table style. Default: true. Aliases: showBandedRows, bandedRows, bandRows.",
"aliases": [
"showBandedRows",
"bandedRows",
"bandRows"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop showRowStripes=false"
],
"readback": "true/false",
"enforcement": "report"
},
"showColumnStripes": {
"type": "bool",
"description": "alternate-column banding from the table style. Default: false. Aliases: showBandedColumns, bandedColumns, bandedCols, showColStripes, bandCols.",
"aliases": [
"showBandedColumns",
"bandedColumns",
"bandedCols",
"showColStripes",
"bandCols"
],
"add": true,
"set": true,
"get": true,
"examples": [
"--prop showColumnStripes=true"
],
"readback": "true/false",
"enforcement": "report"
},
"columns": {
"type": "string",
"description": "comma-separated column header names overriding A1, B1, ... defaults.",
"add": true,
"set": false,
"get": true,
"examples": [
"--prop columns=Name,Qty,Price"
],
"readback": "comma-separated column names as stored (e.g. \"Name,Qty,Price\")",
"enforcement": "report"
},
"totalsRowFunction": {
"type": "string",
"description": "comma-separated per-column totals row functions (none|sum|average|count|countNums|max|min|stdDev|var|custom). Effective only when totalRow=true.",
"add": true,
"set": false,
"get": false,
"examples": [
"--prop totalsRowFunction=none,sum,average"
],
"readback": "per-column tokens",
"enforcement": "report"
},
"totalFunction": {
"type": "string",
"add": false,
"set": false,
"get": true,
"description": "per-column totals-row function readback (surfaces on the column child node).",
"readback": "function token",
"enforcement": "report"
},
"totalLabel": {
"type": "string",
"add": false,
"set": false,
"get": true,
"description": "per-column totals-row label readback (surfaces on the column child node).",
"readback": "label text",
"enforcement": "report"
}
}
}