Files
iofficeai--officecli/examples/excel/charts/charts-advanced.sh
T
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

242 lines
10 KiB
Bash
Executable File

#!/bin/bash
# Advanced Charts Showcase — generates charts-advanced.xlsx exercising the
# xlsx `chart` element's advanced chart types: scatter, bubble, combo, radar,
# and stock (OHLC). 12 charts across 3 sheets.
#
# CLI twin of charts-advanced.py (officecli Python SDK). Both produce an
# equivalent charts-advanced.xlsx.
#
# Usage:
# ./charts-advanced.sh
# NOTE: intentionally NO `set -e`. Like the SDK twin's doc.batch, this script
# tolerates forward-compat 'UNSUPPORTED props' warnings (officecli exit 2) and
# keeps building so the full document is produced.
FILE="$(dirname "$0")/charts-advanced.xlsx"
rm -f "$FILE"
officecli create "$FILE"
officecli open "$FILE"
# ==========================================================================
# Sheet: 1-Scatter & Bubble
# ==========================================================================
officecli add "$FILE" / --type sheet --prop name="1-Scatter & Bubble"
# --------------------------------------------------------------------------
# Chart 1: Scatter with markers — circle markers, line connecting points
# Features: chartType=scatter, categories as X values, marker=circle,
# markerSize, lineWidth, legend=bottom
# --------------------------------------------------------------------------
officecli add "$FILE" "/1-Scatter & Bubble" --type chart \
--prop chartType=scatter \
--prop title="Scatter: Markers & Line" \
--prop categories=1,2,3,4,5,6 \
--prop series1=SeriesA:10,25,15,40,30,50 \
--prop series2=SeriesB:5,18,22,35,28,42 \
--prop colors=4472C4,ED7D31 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=circle --prop markerSize=8 \
--prop lineWidth=1.5 \
--prop legend=bottom
# --------------------------------------------------------------------------
# Chart 2: Scatter with smooth curve and trendline (reference line)
# Features: smooth=true (smooth curve), marker=diamond,
# referenceLine (trendline overlay), axisTitle, catTitle
# --------------------------------------------------------------------------
officecli add "$FILE" "/1-Scatter & Bubble" --type chart \
--prop chartType=scatter \
--prop title="Scatter: Smooth + Trendline" \
--prop categories=1,2,3,4,5,6,7,8 \
--prop series1=Growth:3,7,12,20,28,35,40,45 \
--prop colors=70AD47 \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop smooth=true \
--prop marker=diamond --prop markerSize=7 \
--prop referenceLine=25:FF0000:Target:dash \
--prop axisTitle=Value --prop catTitle=Period
# --------------------------------------------------------------------------
# Chart 3: Scatter with varied marker styles per series
# Features: per-series marker style (series{N}.marker), gridlines styling
# --------------------------------------------------------------------------
officecli add "$FILE" "/1-Scatter & Bubble" --type chart \
--prop chartType=scatter \
--prop title="Scatter: Marker Styles" \
--prop categories=10,20,30,40,50 \
--prop series1=Squares:8,22,18,35,30 \
--prop series2=Triangles:15,10,28,20,42 \
--prop series3=Stars:5,30,12,45,25 \
--prop colors=4472C4,ED7D31,70AD47 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop series1.marker=square \
--prop series2.marker=triangle \
--prop series3.marker=star \
--prop markerSize=9 \
--prop lineWidth=1 \
--prop gridlines=D9D9D9:0.5:dot
# --------------------------------------------------------------------------
# Chart 4: Bubble chart with size data
# Features: chartType=bubble, categories as X, series as Y values,
# bubble sizes default to Y values, bubbleScale to control sizing
# --------------------------------------------------------------------------
officecli add "$FILE" "/1-Scatter & Bubble" --type chart \
--prop chartType=bubble \
--prop title="Bubble: Market Size" \
--prop categories=10,25,40,60,80 \
--prop series1=ProductA:30,50,20,70,45 \
--prop series2=ProductB:15,35,55,40,60 \
--prop colors=4472C4,ED7D31 \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop bubbleScale=80 \
--prop legend=right
# ==========================================================================
# Sheet: 2-Combo & Radar
# ==========================================================================
officecli add "$FILE" / --type sheet --prop name="2-Combo & Radar"
# --------------------------------------------------------------------------
# Chart 1: Combo chart — bar+line with comboSplit
# Features: chartType=combo, comboSplit=2 (first 2 series as bars,
# remaining as lines), categories as X labels
# --------------------------------------------------------------------------
officecli add "$FILE" "/2-Combo & Radar" --type chart \
--prop chartType=combo \
--prop title="Combo: Sales (Bar) + Growth % (Line)" \
--prop categories=Jan,Feb,Mar,Apr,May,Jun \
--prop series1=Revenue:120,145,132,168,155,180 \
--prop series2=Expenses:80,92,85,98,90,105 \
--prop series3=Growth:8,12,6,15,10,16 \
--prop colors=4472C4,ED7D31,70AD47 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop comboSplit=2 \
--prop legend=bottom \
--prop axisTitle=Amount --prop catTitle=Month
# --------------------------------------------------------------------------
# Chart 2: Combo with secondary axis
# Features: comboSplit=1, secondaryAxis=2 (series 2 on right Y-axis)
# --------------------------------------------------------------------------
officecli add "$FILE" "/2-Combo & Radar" --type chart \
--prop chartType=combo \
--prop title="Combo: Volume (Bar) + Price (Line, 2nd Axis)" \
--prop categories=Q1,Q2,Q3,Q4 \
--prop series1=Volume:1200,1450,1320,1680 \
--prop series2=AvgPrice:45,52,48,58 \
--prop colors=5B9BD5,FF0000 \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop comboSplit=1 \
--prop secondaryAxis=2 \
--prop legend=bottom
# --------------------------------------------------------------------------
# Chart 3: Combo with combotypes — per-series type control
# Features: combotypes (per-series type: column, column, line, area)
# --------------------------------------------------------------------------
officecli add "$FILE" "/2-Combo & Radar" --type chart \
--prop chartType=combo \
--prop title="Combo: Mixed Types (combotypes)" \
--prop categories=A,B,C,D,E \
--prop series1=Bars:30,45,28,52,40 \
--prop series2=MoreBars:20,30,22,38,28 \
--prop series3=Lines:12,18,15,22,16 \
--prop series4=Area:8,12,10,15,11 \
--prop colors=4472C4,5B9BD5,ED7D31,70AD47 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop combotypes=column,column,line,area \
--prop legend=bottom
# --------------------------------------------------------------------------
# Chart 4: Radar (spider) chart with multiple series
# Features: chartType=radar, categories as spoke labels,
# multiple series, radarStyle=marker
# --------------------------------------------------------------------------
officecli add "$FILE" "/2-Combo & Radar" --type chart \
--prop chartType=radar \
--prop title="Radar: Skills Comparison" \
--prop categories=Speed,Strength,Stamina,Agility,Accuracy \
--prop series1=AthleteA:80,65,90,75,85 \
--prop series2=AthleteB:70,85,60,90,70 \
--prop series3=AthleteC:90,70,75,65,80 \
--prop colors=4472C4,ED7D31,70AD47 \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop radarStyle=marker \
--prop legend=bottom
# ==========================================================================
# Sheet: 3-Stock & Radar
# ==========================================================================
officecli add "$FILE" / --type sheet --prop name="3-Stock & Radar"
# --------------------------------------------------------------------------
# Chart 1: Stock (OHLC) chart — Open-High-Low-Close
# Features: chartType=stock, 4 series (Open/High/Low/Close),
# categories as date labels, catTitle, axisTitle
# --------------------------------------------------------------------------
officecli add "$FILE" "/3-Stock & Radar" --type chart \
--prop chartType=stock \
--prop title="Stock: OHLC Daily Prices" \
--prop categories=Mon,Tue,Wed,Thu,Fri \
--prop series1=Open:145,148,150,147,152 \
--prop series2=High:152,155,157,153,160 \
--prop series3=Low:143,146,148,144,150 \
--prop series4=Close:148,150,147,152,158 \
--prop x=0 --prop y=0 --prop width=14 --prop height=18 \
--prop legend=bottom \
--prop catTitle=Day --prop axisTitle=Price
# --------------------------------------------------------------------------
# Chart 2: Stock chart — weekly OHLC with date categories
# Features: stock chart with 6 weeks of OHLC, gridlines styling
# --------------------------------------------------------------------------
officecli add "$FILE" "/3-Stock & Radar" --type chart \
--prop chartType=stock \
--prop title="Stock: Weekly OHLC (6 Weeks)" \
--prop categories=W1,W2,W3,W4,W5,W6 \
--prop series1=Open:100,104,102,108,105,110 \
--prop series2=High:106,110,108,115,112,118 \
--prop series3=Low:98,101,100,105,103,107 \
--prop series4=Close:104,102,108,105,110,115 \
--prop x=15 --prop y=0 --prop width=14 --prop height=18 \
--prop gridlines=E0E0E0:0.75 \
--prop legend=bottom
# --------------------------------------------------------------------------
# Chart 3: Radar — filled style (spider web)
# Features: radarStyle=filled, transparency (fill alpha), multiple series
# --------------------------------------------------------------------------
officecli add "$FILE" "/3-Stock & Radar" --type chart \
--prop chartType=radar \
--prop title="Radar: Product Ratings (Filled)" \
--prop categories=Quality,Price,Design,Support,Delivery \
--prop series1=BrandX:85,70,90,75,80 \
--prop series2=BrandY:70,90,65,85,75 \
--prop colors=4472C4,70AD47 \
--prop x=0 --prop y=19 --prop width=14 --prop height=18 \
--prop radarStyle=filled \
--prop transparency=40 \
--prop legend=bottom
# --------------------------------------------------------------------------
# Chart 4: Bubble — single series with explicit large differences in size
# Features: bubble with single series, bubbleScale=100, legend=none,
# axisTitle and catTitle labels
# --------------------------------------------------------------------------
officecli add "$FILE" "/3-Stock & Radar" --type chart \
--prop chartType=bubble \
--prop title="Bubble: Regional Opportunity" \
--prop categories=5,15,30,50,70,90 \
--prop series1=Regions:20,45,30,80,55,65 \
--prop colors=4472C4 \
--prop x=15 --prop y=19 --prop width=14 --prop height=18 \
--prop bubbleScale=100 \
--prop legend=none \
--prop axisTitle=Revenue --prop catTitle="Market Size"
officecli close "$FILE"
officecli validate "$FILE"
echo "Generated: $FILE"