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
1475 lines
40 KiB
JSON
1475 lines
40 KiB
JSON
{
|
|
"$schema": "../_schema.json",
|
|
"element": "chart",
|
|
"shared_base": true,
|
|
"properties": {
|
|
"areafill": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"area.fill"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "fill applied to every series shape. Solid color or gradient 'c1-c2[:angle]'.",
|
|
"examples": [
|
|
"--prop areafill=4472C4-A5C8FF:90"
|
|
]
|
|
},
|
|
"autotitledeleted": {
|
|
"type": "bool",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "suppress the auto-generated 'Chart Title' placeholder.",
|
|
"examples": [
|
|
"--prop autotitledeleted=true"
|
|
]
|
|
},
|
|
"axisfont": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"axis.font"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] axisFont; see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axisfont=10:8B949E:Helvetica"
|
|
]
|
|
},
|
|
"axisline": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"axis.line"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] lineWidth/lineDash; see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axisline=666666:1"
|
|
]
|
|
},
|
|
"axismax": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"max"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] max (on value/value2); see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axismax=1000",
|
|
"--prop axismax=250"
|
|
]
|
|
},
|
|
"axismin": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"min"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] min (on value/value2); see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axismin=0"
|
|
]
|
|
},
|
|
"axisnumfmt": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"axisnumberformat"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] axisNumFmt / format; see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axisnumfmt=\"#,##0\""
|
|
]
|
|
},
|
|
"axisorientation": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"axisreverse"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] axisOrientation; see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axisorientation=true"
|
|
]
|
|
},
|
|
"axisposition": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"axispos"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] tickLabelPos / crossBetween; see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axisposition=top"
|
|
]
|
|
},
|
|
"axistitle": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"vtitle"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] title (value-axis); see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axistitle=\"Revenue\""
|
|
]
|
|
},
|
|
"axisvisible": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"axis.delete",
|
|
"axis.visible"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] visible; see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop axisvisible=false"
|
|
]
|
|
},
|
|
"bubbleScale": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "bubble chart scale (% of default).",
|
|
"readback": "integer percentage",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"bubblescale"
|
|
],
|
|
"examples": [
|
|
"--prop bubblescale=100"
|
|
],
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bubble"
|
|
]
|
|
}
|
|
},
|
|
"catAxisVisible": {
|
|
"type": "bool",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] visible (on role=category); see chart-axis schema for full axis-level options",
|
|
"readback": "true | false",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"cataxis.visible",
|
|
"cataxisvisible"
|
|
],
|
|
"examples": [
|
|
"--prop cataxisvisible=false"
|
|
]
|
|
},
|
|
"catTitle": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "category axis title text.",
|
|
"readback": "title string",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"htitle",
|
|
"cattitle"
|
|
],
|
|
"examples": [
|
|
"--prop cattitle=\"Quarter\""
|
|
]
|
|
},
|
|
"cataxisline": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"cataxis.line"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] lineWidth/lineDash (on role=category); see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop cataxisline=333333:1"
|
|
]
|
|
},
|
|
"categories": {
|
|
"type": "string",
|
|
"description": "comma-separated category labels, OR a cell range reference (e.g. Sheet1!A2:A5)",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop categories=A,B,C",
|
|
"--prop categories=\"Q1,Q2,Q3,Q4\"",
|
|
"--prop categories=\"Sheet1!$A$2:$A$5\""
|
|
],
|
|
"readback": "comma-separated category labels",
|
|
"enforcement": "strict"
|
|
},
|
|
"chartFill": {
|
|
"type": "color",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "chart-level fill color (accepts #RRGGBB, named colors, or scheme names).",
|
|
"readback": "#RRGGBB or color descriptor",
|
|
"enforcement": "report"
|
|
},
|
|
"chartType": {
|
|
"type": "enum",
|
|
"values": [
|
|
"bar",
|
|
"column",
|
|
"line",
|
|
"pie",
|
|
"doughnut",
|
|
"area",
|
|
"scatter",
|
|
"bubble",
|
|
"radar",
|
|
"stock",
|
|
"combo",
|
|
"waterfall",
|
|
"funnel",
|
|
"treemap",
|
|
"sunburst",
|
|
"boxWhisker",
|
|
"histogram",
|
|
"pareto"
|
|
],
|
|
"modifiers": {
|
|
"3d": {
|
|
"suffix": "3d",
|
|
"example": "column3d",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bar",
|
|
"column",
|
|
"line",
|
|
"pie",
|
|
"area"
|
|
]
|
|
}
|
|
},
|
|
"stacked": {
|
|
"prefix": "stacked",
|
|
"example": "stackedBar",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bar",
|
|
"column",
|
|
"line",
|
|
"area"
|
|
]
|
|
}
|
|
},
|
|
"percentStacked": {
|
|
"prefix": "percentStacked",
|
|
"example": "percentStackedBar",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bar",
|
|
"column",
|
|
"line",
|
|
"area"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"aliases": [
|
|
"type",
|
|
"col",
|
|
"donut",
|
|
"xy",
|
|
"spider",
|
|
"ohlc",
|
|
"wf",
|
|
"charttype"
|
|
],
|
|
"propAliases": [
|
|
"type"
|
|
],
|
|
"add": true,
|
|
"set": false,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop chartType=column",
|
|
"--prop chartType=stackedBar",
|
|
"--prop chartType=percentStackedColumn",
|
|
"--prop chartType=column3d",
|
|
"--prop chartType=waterfall"
|
|
],
|
|
"readback": "normalized chartType string without modifiers (modifiers surface as separate flags in later iterations)",
|
|
"setNote": "chart type is fixed at creation; changing it post-hoc would require rebuilding the chart XML (series/axes differ per type). Remove and re-add the chart to change its type, or use combotypes for per-series type overrides.",
|
|
"enforcement": "strict"
|
|
},
|
|
"chartareafill": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"chartfill"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "chart-area background fill. Solid color, gradient, or 'none'.",
|
|
"examples": [
|
|
"--prop chartareafill=FFFFFF"
|
|
]
|
|
},
|
|
"chartborder": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"chartarea.border"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "chart-area outer border line. Same format as plotborder.",
|
|
"examples": [
|
|
"--prop chartborder=000000:1",
|
|
"--prop chartborder=none"
|
|
]
|
|
},
|
|
"colorrule": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"conditionalcolor",
|
|
"colorRule"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "conditional per-data-point color. Format: 'threshold:belowColor:aboveColor'.",
|
|
"examples": [
|
|
"--prop colorrule=0:FF0000:00AA00"
|
|
]
|
|
},
|
|
"colors": {
|
|
"type": "string",
|
|
"description": "comma-separated series fill colors, positional (1st color → series 1). Per-series dotted keys (series1.color=...) override positions.",
|
|
"add": true,
|
|
"set": false,
|
|
"get": false,
|
|
"examples": [
|
|
"--prop colors=\"4472C4,ED7D31,A5A5A5\""
|
|
],
|
|
"enforcement": "strict"
|
|
},
|
|
"combosplit": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": false,
|
|
"get": false,
|
|
"description": "combo chart split index: first N series use primary chart type, rest use secondary. Add-time only.",
|
|
"examples": [
|
|
"--prop combosplit=2"
|
|
]
|
|
},
|
|
"combotypes": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"combo.types"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "rebuild as combo chart with per-series chart types (column,line,area,...). Comma-separated, one per series.",
|
|
"examples": [
|
|
"--prop combotypes=\"column,column,line\""
|
|
]
|
|
},
|
|
"crossBetween": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "category axis cross-between behavior (between / midCat).",
|
|
"examples": [
|
|
"--prop crossBetween=between",
|
|
"--prop crossbetween=midcat"
|
|
],
|
|
"readback": "crossBetween token",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"crossbetween"
|
|
]
|
|
},
|
|
"crosses": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "where the value axis crosses the category axis. Values: autoZero (default), max, min.",
|
|
"examples": [
|
|
"--prop crosses=max"
|
|
],
|
|
"readback": "crosses token"
|
|
},
|
|
"crossesAt": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "value-axis crossesAt value readback.",
|
|
"readback": "numeric value",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"crossesat"
|
|
],
|
|
"examples": [
|
|
"--prop crossesat=0"
|
|
]
|
|
},
|
|
"data": {
|
|
"type": "string",
|
|
"description": "inline series spec 'Name:1,2,3' or 'Name1:1,2,3;Name2:4,5,6'. Add-time only; use per-series chart-series Set after creation.",
|
|
"add": true,
|
|
"set": false,
|
|
"get": false,
|
|
"examples": [
|
|
"--prop data=\"Sales:10,20,30\"",
|
|
"--prop data=\"Sales:10,20,30;Cost:5,8,12\""
|
|
],
|
|
"readback": "n/a",
|
|
"enforcement": "report"
|
|
},
|
|
"dataLabels": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"datalabels",
|
|
"labels"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "show/hide data labels. Use 'none' to hide; otherwise comma list of flags: value, percent, category, series, all (also accepts seriesName/categoryName/percentage/values aliases). Position values (outsideEnd/center/insideEnd/insideBase/top/bottom/left/right/bestFit) implicitly enable showVal and apply as dLblPos.",
|
|
"examples": [
|
|
"--prop dataLabels=value",
|
|
"--prop dataLabels=\"value,percent\"",
|
|
"--prop dataLabels=outsideEnd",
|
|
"--prop dataLabels=none"
|
|
],
|
|
"readback": "comma-separated flags: value,percent,category,series"
|
|
},
|
|
"dataTable": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"datatable"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "show data table beneath the chart (with default borders + legend keys).",
|
|
"examples": [
|
|
"--prop dataTable=true"
|
|
],
|
|
"readback": "true | false"
|
|
},
|
|
"decreaseColor": {
|
|
"type": "color",
|
|
"add": true,
|
|
"set": false,
|
|
"get": false,
|
|
"description": "waterfall: negative bar color. Add-time only.",
|
|
"examples": [
|
|
"--prop decreaseColor=FF0000"
|
|
]
|
|
},
|
|
"dispBlanksAs": {
|
|
"type": "enum",
|
|
"values": [
|
|
"gap",
|
|
"zero",
|
|
"span"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "how empty cells render (gap leaves a hole, zero plots as 0, span connects across).",
|
|
"examples": [
|
|
"--prop dispBlanksAs=gap"
|
|
],
|
|
"readback": "dispBlanksAs token",
|
|
"enforcement": "report"
|
|
},
|
|
"droplines": {
|
|
"type": "string",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"line"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "drop lines on line chart. true|false toggle or line spec 'color[:width[:dash]]'; 'none' removes.",
|
|
"examples": [
|
|
"--prop droplines=true",
|
|
"--prop droplines=808080:0.5"
|
|
]
|
|
},
|
|
"errbars": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"errorbars"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "error bars on each series. Format: 'type:value' where type ∈ fixed (alias: fixedValue), percent (alias: percentage, pct), stddev (alias: standardDeviation), stderr (alias: standardError). 'none' removes.",
|
|
"examples": [
|
|
"--prop errbars=fixed:5",
|
|
"--prop errbars=none",
|
|
"--prop errbars=percent:10"
|
|
]
|
|
},
|
|
"explosion": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"explode"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "pie/doughnut slice explosion 0..100 (percent of radius); 0 removes.",
|
|
"examples": [
|
|
"--prop explosion=10"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"firstSliceAngle": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "pie/doughnut first slice angle (degrees).",
|
|
"readback": "integer degrees",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"sliceangle",
|
|
"firstsliceangle"
|
|
],
|
|
"examples": [
|
|
"--prop firstsliceangle=90"
|
|
],
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"pie"
|
|
]
|
|
}
|
|
},
|
|
"gapdepth": {
|
|
"type": "number",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bar3d",
|
|
"line3d",
|
|
"area3d"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "depth gap between series in 3D bar/line/area charts (percent).",
|
|
"examples": [
|
|
"--prop gapdepth=150"
|
|
]
|
|
},
|
|
"gapwidth": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"gap"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "gap between bar/column groups, 0..500 (percent of bar width).",
|
|
"examples": [
|
|
"--prop gapwidth=150"
|
|
],
|
|
"readback": "integer 0..500"
|
|
},
|
|
"gradient": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"gradientfill"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "gradient fill applied to every series. Format: 'c1-c2[-c3][:angle]' (angle in degrees). Errors if chart has no series.",
|
|
"examples": [
|
|
"--prop gradient=FF0000-0000FF",
|
|
"--prop gradient=FF0000-00FF00-0000FF:90"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"gradients": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "per-series gradient fills, semicolon-separated; one entry per series.",
|
|
"examples": [
|
|
"--prop gradients=\"FF0000-0000FF;00FF00-FFFF00\""
|
|
]
|
|
},
|
|
"gridlines": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"majorgridlines"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "value-axis major gridlines. true|false toggle, or line spec 'color', 'color:width', 'color:width:dash' to style; 'none' removes.",
|
|
"examples": [
|
|
"--prop gridlines=true",
|
|
"--prop gridlines=E0E0E0:0.3",
|
|
"--prop gridlines=none"
|
|
],
|
|
"readback": "true | false"
|
|
},
|
|
"height": {
|
|
"type": "length",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "chart frame height; accepts cm/in/pt/EMU. Ignored if anchor= is set.",
|
|
"examples": [
|
|
"--prop height=10cm"
|
|
]
|
|
},
|
|
"hilowlines": {
|
|
"type": "string",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"line",
|
|
"stock"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "high-low lines on line/stock chart. Same format as droplines.",
|
|
"examples": [
|
|
"--prop hilowlines=true"
|
|
]
|
|
},
|
|
"holeSize": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "doughnut hole size readback.",
|
|
"readback": "integer 10..90 percent",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"holesize"
|
|
],
|
|
"examples": [
|
|
"--prop holesize=50",
|
|
"--prop holeSize=50"
|
|
],
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"doughnut"
|
|
]
|
|
}
|
|
},
|
|
"increaseColor": {
|
|
"type": "color",
|
|
"add": true,
|
|
"set": false,
|
|
"get": false,
|
|
"description": "waterfall: positive bar color. Add-time only.",
|
|
"examples": [
|
|
"--prop increaseColor=00AA00"
|
|
]
|
|
},
|
|
"invertifneg": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"invertifnegative"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "if true, draw negative bars in an inverted (lighter) color.",
|
|
"examples": [
|
|
"--prop invertifneg=true"
|
|
]
|
|
},
|
|
"labelPos": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"labelpos",
|
|
"labelposition"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "data label position. Values: center|ctr, insideEnd|inEnd|inside, insideBase|inBase|base, outsideEnd|outEnd|outside, bestFit|best|auto, top|t, bottom|b, left|l, right|r. Restrictions: not supported on doughnut/area/radar/stock; pie/pie3D restricted to ctr/inEnd/inBase/bestFit (other tokens rejected, per OOXML ST_DLblPosPie); stacked series clamp to ctr/inBase/inEnd; combo charts skip entirely.",
|
|
"examples": [
|
|
"--prop labelPos=outsideEnd"
|
|
],
|
|
"readback": "OOXML position token: ctr/inEnd/inBase/outEnd/bestFit/t/b/l/r"
|
|
},
|
|
"labelfont": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "data label text font. Format: 'size:color:fontname' (any segment optional). Readback is split into labelFont.size / labelFont.color / labelFont.bold / labelFont.name (one key per slot) so dump→replay can rebuild the compound spec without parsing.",
|
|
"examples": [
|
|
"--prop labelfont=9:333333:Calibri"
|
|
]
|
|
},
|
|
"labelFont.size": {
|
|
"type": "number",
|
|
"get": true,
|
|
"description": "data label font size in points. Readback of the size slot inside labelfont= (BuildLabelTextProperties' DefaultRunProperties.FontSize).",
|
|
"examples": []
|
|
},
|
|
"labelFont.color": {
|
|
"type": "string",
|
|
"get": true,
|
|
"description": "data label font color (hex, e.g. #FF0000). Readback of the color slot inside labelfont=.",
|
|
"examples": []
|
|
},
|
|
"labelFont.bold": {
|
|
"type": "bool",
|
|
"get": true,
|
|
"description": "data label font bold flag. Emitted only when true.",
|
|
"examples": []
|
|
},
|
|
"labelFont.name": {
|
|
"type": "string",
|
|
"get": true,
|
|
"description": "data label font typeface (latin). Readback of the fontname slot inside labelfont=.",
|
|
"examples": []
|
|
},
|
|
"labeloffset": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "category-axis label offset 0..1000 (percent of font height); category axis only.",
|
|
"examples": [
|
|
"--prop labeloffset=100"
|
|
]
|
|
},
|
|
"labelrotation": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"xaxis.labelrotation",
|
|
"valaxis.labelrotation",
|
|
"yaxis.labelrotation",
|
|
"xaxis.labelRotation",
|
|
"valaxis.labelRotation",
|
|
"yaxis.labelRotation",
|
|
"xaxislabelrotation",
|
|
"valaxislabelrotation",
|
|
"yaxislabelrotation"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "tick-label rotation in degrees (-90..90). Bare 'labelrotation' targets both axes; xaxis.* targets category, yaxis./valaxis.* targets value.",
|
|
"examples": [
|
|
"--prop labelrotation=-45",
|
|
"--prop xaxis.labelrotation=30"
|
|
]
|
|
},
|
|
"leaderlines": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"showleaderlines"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "show/hide leader lines connecting data labels to slices (pie/doughnut).",
|
|
"examples": [
|
|
"--prop leaderlines=true"
|
|
]
|
|
},
|
|
"legend": {
|
|
"type": "enum",
|
|
"values": [
|
|
"true",
|
|
"false",
|
|
"none",
|
|
"top",
|
|
"bottom",
|
|
"left",
|
|
"right",
|
|
"topRight",
|
|
"tr"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "legend position. 'none'/'false' hides; otherwise place at top|t, bottom|b, left|l, right|r, topRight|tr. Hyphen and underscore variants accepted.",
|
|
"examples": [
|
|
"--prop legend=bottom",
|
|
"--prop legend=none"
|
|
]
|
|
},
|
|
"legend.overlay": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"legendoverlay"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "if true, legend overlays the plot area instead of reserving space.",
|
|
"examples": [
|
|
"--prop legend.overlay=true"
|
|
],
|
|
"readback": "true | false"
|
|
},
|
|
"legendFont": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"legendfont",
|
|
"legend.font"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "legend text font. Format: 'size:color:fontname' (any segment optional).",
|
|
"examples": [
|
|
"--prop legendFont=10:CCCCCC:Arial",
|
|
"--prop legendFont=9:808080"
|
|
],
|
|
"readback": "size:color:fontname"
|
|
},
|
|
"linedash": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"dash"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "line dash style for every series. Values: solid, dash, dashDot, dot, lgDash, lgDashDot, sysDash, sysDot, sysDashDot.",
|
|
"examples": [
|
|
"--prop linedash=dash"
|
|
]
|
|
},
|
|
"linewidth": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "line width in points (applies to every series line).",
|
|
"examples": [
|
|
"--prop linewidth=2"
|
|
]
|
|
},
|
|
"logbase": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"logscale",
|
|
"yaxisscale"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "value-axis logarithmic base (2..1000 typically). Shorthand: true|yes|log|1 → base 10; false|none|linear|0 removes log scale.",
|
|
"examples": [
|
|
"--prop logbase=10",
|
|
"--prop logscale=true",
|
|
"--prop yaxisscale=linear"
|
|
]
|
|
},
|
|
"majorTickMark": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "major tick mark style (out / in / cross / none).",
|
|
"examples": [
|
|
"--prop majorTickMark=out",
|
|
"--prop majortickmark=out"
|
|
],
|
|
"readback": "tick mark token",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"majortick",
|
|
"majortickmark"
|
|
]
|
|
},
|
|
"majorunit": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "value-axis major gridline / tick spacing.",
|
|
"examples": [
|
|
"--prop majorunit=200",
|
|
"--prop majorunit=50"
|
|
]
|
|
},
|
|
"marker": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"markers"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "marker symbol for line/scatter/radar series only (other types silently skipped). Format: 'symbol' or 'symbol:size' or 'symbol:size:color'. Symbols: none, auto, circle, square, diamond, triangle, x, plus, star, dash, dot. (picture markers are not implemented.) Chart-level Get surfaces a first-series representative value once any series carries a marker (the dump emitter relies on it for uniform-marker charts); the authoritative per-series read is /chart[N]/series[K] (chart-series schema declares marker get:true).",
|
|
"examples": [
|
|
"--prop marker=circle",
|
|
"--prop marker=square:8:FF0000"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"markersize": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "marker size 2..72 (line/scatter/radar series only).",
|
|
"examples": [
|
|
"--prop markersize=8"
|
|
]
|
|
},
|
|
"markercolor": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"marker.color"
|
|
],
|
|
"set": true,
|
|
"get": true,
|
|
"description": "marker fill color (line/scatter/radar series only). Fans out to every applicable series; preserves existing marker symbol/size. Read back from the first series' marker spPr/solidFill.",
|
|
"examples": [
|
|
"--prop markerColor=FF0000"
|
|
],
|
|
"readback": "as emitted by handler (hex color, e.g. #FF0000)"
|
|
},
|
|
"minorGridlines": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"minorgridlines"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "value-axis minor gridlines; same format as gridlines.",
|
|
"examples": [
|
|
"--prop minorGridlines=true",
|
|
"--prop minorGridlines=F0F0F0:0.25"
|
|
],
|
|
"readback": "true | false"
|
|
},
|
|
"minorTickMark": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "minor tick mark style (out / in / cross / none).",
|
|
"examples": [
|
|
"--prop minorTickMark=none",
|
|
"--prop minortickmark=in"
|
|
],
|
|
"readback": "tick mark token",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"minortick",
|
|
"minortickmark"
|
|
]
|
|
},
|
|
"minorunit": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "value-axis minor gridline / tick spacing.",
|
|
"examples": [
|
|
"--prop minorunit=50",
|
|
"--prop minorunit=10"
|
|
]
|
|
},
|
|
"overlap": {
|
|
"type": "number",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "bar/column overlap within a group, -100..100 (negative = gap, positive = overlap).",
|
|
"examples": [
|
|
"--prop overlap=0",
|
|
"--prop overlap=100"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"plotFill": {
|
|
"type": "color",
|
|
"aliases": [
|
|
"plotareafill",
|
|
"plotfill"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "plot-area background fill. Solid color, gradient 'c1-c2[:angle]', or 'none'.",
|
|
"examples": [
|
|
"--prop plotFill=FAFAFA",
|
|
"--prop plotareafill=FAFAFA",
|
|
"--prop plotFill=none"
|
|
],
|
|
"readback": "#RRGGBB or color descriptor"
|
|
},
|
|
"plotborder": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"plotarea.border"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "plot-area border line. Format: 'color', 'color:width', 'color:width:dash'; or 'none'.",
|
|
"examples": [
|
|
"--prop plotborder=CCCCCC:0.5",
|
|
"--prop plotborder=none"
|
|
]
|
|
},
|
|
"plotvisonly": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"plotvisibleonly"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "if true, skip plotting hidden worksheet rows/columns.",
|
|
"examples": [
|
|
"--prop plotvisonly=true"
|
|
]
|
|
},
|
|
"preset": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"theme",
|
|
"style.preset"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "named style bundle. Values: minimal, dark, corporate, magazine, dashboard, colorful, monochrome (alias mono).",
|
|
"examples": [
|
|
"--prop preset=minimal",
|
|
"--prop preset=corporate",
|
|
"--prop preset=dark"
|
|
]
|
|
},
|
|
"referenceline": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"refline",
|
|
"targetline"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "horizontal reference / target line. Format: 'value' or 'value:color' or 'value:color:label' or 'value:color:label:dash'. Pass 'none' to remove.",
|
|
"examples": [
|
|
"--prop referenceline=100:FF0000:Target",
|
|
"--prop referenceline=none",
|
|
"--prop refline=80:00AA00"
|
|
]
|
|
},
|
|
"scatterstyle": {
|
|
"type": "string",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"scatter"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "scatter chart subtype. Values: line|lineOnly, lineMarker, marker|markerOnly, smooth|smoothLine, smoothMarker.",
|
|
"examples": [
|
|
"--prop scatterstyle=smoothMarker"
|
|
]
|
|
},
|
|
"secondaryaxis": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"secondary"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "comma-separated 1-based series indices to plot on a secondary value axis.",
|
|
"examples": [
|
|
"--prop secondaryaxis=2",
|
|
"--prop secondary=\"2,3\""
|
|
]
|
|
},
|
|
"series{N}": {
|
|
"type": "string",
|
|
"add": false,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "legacy bare per-series data update (N is the 1-based series index). 'series{N}=\"1,2,3\"' replaces the numeric values for series N; 'series{N}=\"Name:1,2,3\"' also updates the series label. Prefer the dotted form (series{N}.name=, series{N}.values=) for clarity — see chart-series schema.",
|
|
"examples": [
|
|
"--prop series1=\"10,20,30\"",
|
|
"--prop series2=\"Revenue:5,8,12\""
|
|
]
|
|
},
|
|
"seriesoutline": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"series.outline"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "series outline. Format: 'color', 'color:width', or 'color:width:dash' (also accepts '-' separator); 'none' removes.",
|
|
"examples": [
|
|
"--prop seriesoutline=000000:0.5",
|
|
"--prop seriesoutline=none"
|
|
]
|
|
},
|
|
"seriesshadow": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"series.shadow"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "outer shadow on every series shape. Format: 'COLOR-BLUR-ANGLE-DIST-OPACITY'; 'none' removes.",
|
|
"examples": [
|
|
"--prop seriesshadow=000000-5-45-3-50",
|
|
"--prop seriesshadow=none"
|
|
]
|
|
},
|
|
"serlines": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"serieslines"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "series lines on stacked bar charts (true/false).",
|
|
"examples": [
|
|
"--prop serlines=true"
|
|
]
|
|
},
|
|
"shape": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"barshape"
|
|
],
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bar3d"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "3D bar shape. Values: box|cuboid, cone, coneToMax, cylinder, pyramid, pyramidToMax. Bar3D charts only.",
|
|
"examples": [
|
|
"--prop shape=cylinder"
|
|
]
|
|
},
|
|
"showMarker": {
|
|
"type": "string",
|
|
"add": false,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "show markers on line/scatter series at chart level (true|false).",
|
|
"examples": [
|
|
"--prop showMarker=true"
|
|
],
|
|
"readback": "true | false",
|
|
"enforcement": "report"
|
|
},
|
|
"shownegbubbles": {
|
|
"type": "bool",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bubble"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "render negative-valued bubbles. Bubble charts only.",
|
|
"examples": [
|
|
"--prop shownegbubbles=true"
|
|
]
|
|
},
|
|
"sizerepresents": {
|
|
"type": "string",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"bubble"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "how bubble size value is mapped. Values: area (default), width|w. Bubble charts only.",
|
|
"examples": [
|
|
"--prop sizerepresents=area"
|
|
]
|
|
},
|
|
"smooth": {
|
|
"type": "string",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"line",
|
|
"scatter"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "smooth lines on line/scatter charts (true|false). Reported unsupported for other chart types.",
|
|
"examples": [
|
|
"--prop smooth=true"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"style": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"styleid"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "built-in chart style id 1..48; pass 'none' to clear.",
|
|
"examples": [
|
|
"--prop style=2"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"tickLabelPos": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "tick label position (high / low / nextTo / none).",
|
|
"examples": [
|
|
"--prop tickLabelPos=nextTo",
|
|
"--prop ticklabelpos=low"
|
|
],
|
|
"readback": "tick label position token",
|
|
"enforcement": "report",
|
|
"aliases": [
|
|
"ticklabelposition",
|
|
"ticklabelpos"
|
|
]
|
|
},
|
|
"ticklabelskip": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"tickskip"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "draw tick labels every Nth category (category axis).",
|
|
"examples": [
|
|
"--prop ticklabelskip=2"
|
|
]
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "chart title text; pass 'none' (case-insensitive) or an empty string to omit/remove the title — on add this skips creating the title element, on set it removes an existing title. Get also returns sub-keys title.font, title.size, title.color, title.bold when set; these are get-only readback fields surfaced from chart title runs.",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"examples": [
|
|
"--prop title=\"Q1\"",
|
|
"--prop title=\"2024 Sales\"",
|
|
"--prop title=none"
|
|
],
|
|
"readback": "chart title",
|
|
"enforcement": "report"
|
|
},
|
|
"title.bold": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "title bold flag (true|false).",
|
|
"readback": "true | false"
|
|
},
|
|
"title.color": {
|
|
"type": "color",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "title font color (#RRGGBB, named, or scheme color).",
|
|
"readback": "#RRGGBB"
|
|
},
|
|
"title.font": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "title font name.",
|
|
"readback": "font name"
|
|
},
|
|
"title.overlay": {
|
|
"type": "bool",
|
|
"aliases": [
|
|
"titleoverlay"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "if true, title overlays the plot area instead of reserving space above it.",
|
|
"examples": [
|
|
"--prop title.overlay=true"
|
|
],
|
|
"readback": "true"
|
|
},
|
|
"title.size": {
|
|
"type": "font-size",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "title font size (e.g. 14 or 14pt).",
|
|
"readback": "Npt"
|
|
},
|
|
"totalColor": {
|
|
"type": "color",
|
|
"add": true,
|
|
"set": false,
|
|
"get": false,
|
|
"description": "waterfall: subtotal/total bar color. Add-time only.",
|
|
"examples": [
|
|
"--prop totalColor=4472C4"
|
|
]
|
|
},
|
|
"transparency": {
|
|
"type": "number",
|
|
"aliases": [
|
|
"opacity",
|
|
"alpha"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "series fill transparency (0..100, percent). 'transparency' is inverse of 'opacity'/'alpha' (transparency=30 ≡ opacity=70).",
|
|
"examples": [
|
|
"--prop transparency=30",
|
|
"--prop opacity=70"
|
|
]
|
|
},
|
|
"trendline": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "add trendline to every series. Format: 'type[:order]' or 'type:forward:backward'. Types: linear (default), exp|exponential, log|logarithmic, poly|polynomial, power, movingAvg|moving|movingAverage. Order applies to poly/movingAvg. Pass 'none' to clear.",
|
|
"examples": [
|
|
"--prop trendline=linear",
|
|
"--prop trendline=poly:3",
|
|
"--prop trendline=none",
|
|
"--prop trendline=movingAvg:3"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"updownbars": {
|
|
"type": "string",
|
|
"appliesWhen": {
|
|
"chartType": [
|
|
"line",
|
|
"stock"
|
|
]
|
|
},
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "up/down bars on line chart. true | 'gapWidth:upColor:downColor' | 'none'/'false'.",
|
|
"examples": [
|
|
"--prop updownbars=true",
|
|
"--prop updownbars=150:00AA00:FF0000"
|
|
]
|
|
},
|
|
"valaxisline": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"valaxis.line"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": false,
|
|
"description": "convenience shortcut for /chart[N]/axis[@role=...] lineWidth/lineDash (on role=value); see chart-axis schema for full axis-level options",
|
|
"examples": [
|
|
"--prop valaxisline=333333:1"
|
|
]
|
|
},
|
|
"varyColors": {
|
|
"type": "string",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "vary colors by data point (true|false; single-series charts).",
|
|
"examples": [
|
|
"--prop varyColors=true"
|
|
],
|
|
"readback": "true | false",
|
|
"enforcement": "report"
|
|
},
|
|
"view3d": {
|
|
"type": "string",
|
|
"aliases": [
|
|
"camera",
|
|
"perspective"
|
|
],
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "3D view angles. Format: 'rotX,rotY,perspective' (any tail optional) or single integer for perspective only. Named-key form (rotX=...) is rejected.",
|
|
"examples": [
|
|
"--prop view3d=15,20,30",
|
|
"--prop view3d=20",
|
|
"--prop perspective=30"
|
|
],
|
|
"readback": "as emitted by handler (per-format details vary)"
|
|
},
|
|
"width": {
|
|
"type": "length",
|
|
"add": true,
|
|
"set": true,
|
|
"get": true,
|
|
"description": "chart frame width; accepts cm/in/pt/EMU. Ignored if anchor= is set.",
|
|
"examples": [
|
|
"--prop width=18cm",
|
|
"--prop width=15cm"
|
|
]
|
|
}
|
|
}
|
|
} |