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

249 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Basic PPT Tables
This demo consists of three files that work together:
- **tables-basic.sh** — Shell script that calls `officecli` commands to generate the deck.
- **tables-basic.pptx** — The generated 5-slide deck (inline data, per-cell set, fill variations, cell typography, cell layout).
- **tables-basic.md** — This file. Maps each slide to the features it demonstrates.
## Regenerate
```bash
cd examples/ppt
bash tables/tables-basic.sh
# → tables/tables-basic.pptx
```
## Slides
### Slide 1 — Inline Data (CSV via data=)
A single command creates a fully populated table using `data=` CSV syntax.
```bash
officecli create tables-basic.pptx
officecli open tables-basic.pptx
officecli add tables-basic.pptx / --type slide
# data= uses CSV: comma = cell separator, semicolon = row separator.
# First row becomes the header row when headerFill= is set.
officecli add tables-basic.pptx '/slide[1]' --type table \
--prop x=0.5in --prop y=1.2in --prop width=12in --prop height=2in \
--prop headerFill=4472C4 --prop bodyFill=DEEAF6 \
--prop data="Region,Q1,Q2,Q3,Q4;North,120,135,142,168;South,98,110,121,140;East,165,178,190,205"
```
**Features:** `--type table`, `data` (CSV; `,` = cell, `;` = row), `headerFill` (header row background hex color), `bodyFill` (body rows background hex color), `x`/`y`/`width`/`height` (position and size)
---
### Slide 2 — Per-Cell Set
Create an empty grid with `rows=` and `cols=`, then populate each cell individually via `set`.
```bash
officecli add tables-basic.pptx / --type slide
# Empty table skeleton — no data, just dimensions
officecli add tables-basic.pptx '/slide[2]' --type table \
--prop x=0.5in --prop y=1.2in --prop width=10in --prop height=2.5in \
--prop rows=4 --prop cols=3 --prop headerFill=2E75B6
# Header cells: tr[1] = first row, tc[N] = Nth column (1-based)
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[1]/tc[1]' \
--prop text="Product" --prop bold=true --prop color=FFFFFF
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[1]/tc[2]' \
--prop text="Units" --prop bold=true --prop color=FFFFFF
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[1]/tc[3]' \
--prop text="Revenue" --prop bold=true --prop color=FFFFFF
# Body cells — row 2..4
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[2]/tc[1]' --prop text="Widget"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[2]/tc[2]' --prop text="1,200"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[2]/tc[3]' --prop text="\$48,000"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[3]/tc[1]' --prop text="Gizmo"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[3]/tc[2]' --prop text="850"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[3]/tc[3]' --prop text="\$72,250"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[4]/tc[1]' --prop text="Sprocket"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[4]/tc[2]' --prop text="430"
officecli set tables-basic.pptx '/slide[2]/table[1]/tr[4]/tc[3]' --prop text="\$25,800"
```
**Features:** `rows` / `cols` (create empty grid), path syntax `/table[N]/tr[R]/tc[C]` (all 1-based), `text`, `bold`, `color` (text color hex)
---
### Slide 3 — Cell Fill Variations
Every fill syntax demonstrated in a two-column reference table.
```bash
officecli add tables-basic.pptx / --type slide
# style=none disables the built-in theme; border.all applies a uniform border
officecli add tables-basic.pptx '/slide[3]' --type table \
--prop x=0.5in --prop y=1.2in --prop width=12in --prop height=4in \
--prop rows=5 --prop cols=2 --prop style=none --prop border.all="1pt solid 808080"
# Solid hex fill
officecli set tables-basic.pptx '/slide[3]/table[1]/tr[2]/tc[2]' --prop fill=FF0000
# Named color (also accepts rgb(255,0,0) form)
officecli set tables-basic.pptx '/slide[3]/table[1]/tr[3]/tc[2]' --prop fill=red
# Theme color — follows deck theme; changes when theme changes
officecli set tables-basic.pptx '/slide[3]/table[1]/tr[4]/tc[2]' --prop fill=accent1
# Gradient — "COLOR1-COLOR2-ANGLE"
officecli set tables-basic.pptx '/slide[3]/table[1]/tr[5]/tc[2]' \
--prop fill="FF0000-0000FF-90"
# fill=none — explicit transparent (cell becomes slide-background color)
officecli add tables-basic.pptx '/slide[3]' --type table \
--prop x=0.5in --prop y=5.9in --prop width=4in --prop height=0.8in \
--prop rows=1 --prop cols=2 --prop style=none --prop border.all="1pt solid 000000"
officecli set tables-basic.pptx '/slide[3]/table[2]/tr[1]/tc[1]' \
--prop text="solid" --prop fill=FFE699
officecli set tables-basic.pptx '/slide[3]/table[2]/tr[1]/tc[2]' \
--prop text="none" --prop fill=none
```
**Features:** `fill` (hex, named color, rgb(), accent1..6 theme colors, `C1-C2-ANGLE` gradient, none), `style=none` (disable built-in theme), `border.all` (compound `Npt solid HEX` shorthand)
---
### Slide 4 — Cell Typography
Seven-row reference table demonstrating every text property available on table cells.
```bash
officecli add tables-basic.pptx / --type slide
officecli add tables-basic.pptx '/slide[4]' --type table \
--prop x=0.5in --prop y=1.1in --prop width=13in --prop height=5in \
--prop rows=7 --prop cols=2 --prop style=none --prop border.all="1pt solid 808080"
# italic
officecli set tables-basic.pptx '/slide[4]/table[1]/tr[2]/tc[2]' \
--prop text="This cell text is italic." --prop italic=true
# underline
officecli set tables-basic.pptx '/slide[4]/table[1]/tr[3]/tc[2]' \
--prop text="This cell text is underlined." --prop underline=single
# strike
officecli set tables-basic.pptx '/slide[4]/table[1]/tr[4]/tc[2]' \
--prop text="This cell text has strikethrough." --prop strike=single
# font + size
officecli set tables-basic.pptx '/slide[4]/table[1]/tr[5]/tc[2]' \
--prop text="This cell uses Georgia." --prop font="Georgia" --prop size=16
# wrap=false — text overflows/clips rather than wrapping to next line
officecli set tables-basic.pptx '/slide[4]/table[1]/tr[6]/tc[2]' \
--prop text="This is a long sentence that will not wrap because wrap is disabled — it just runs off the edge." \
--prop wrap=false
# linespacing + spacebefore + spaceafter — paragraph spacing inside cell
officecli set tables-basic.pptx '/slide[4]/table[1]/tr[7]/tc[2]' \
--prop text="Paragraph A" \
--prop linespacing=1.5x --prop spacebefore=4pt --prop spaceafter=4pt
```
**Features:** `italic`, `underline` (single, double, heavy, dotted, dash), `strike` (single, double), `font` (typeface name), `size` (pt), `wrap` (false — disables text wrap), `linespacing` (multiplier or pt), `spacebefore` / `spaceafter` (pt)
---
### Slide 5 — Cell Layout
Eight-row reference table demonstrating padding, opacity, image fill, text direction, merge, and per-edge border.
```bash
officecli add tables-basic.pptx / --type slide
officecli add tables-basic.pptx '/slide[5]' --type table \
--prop x=0.5in --prop y=1.1in --prop width=13in --prop height=6.2in \
--prop rows=8 --prop cols=2 --prop style=none --prop border.all="1pt solid 808080"
# padding — uniform inner text margin
officecli set tables-basic.pptx '/slide[5]/table[1]/tr[2]/tc[2]' \
--prop text="Large inner margin." --prop fill=F1FAEE --prop padding=0.25in
# padding.bottom — single-edge padding override
officecli set tables-basic.pptx '/slide[5]/table[1]/tr[3]/tc[2]' \
--prop text="Extra space below this text." --prop fill=F1FAEE \
--prop "padding.bottom=0.3in"
# opacity — fill transparency (0=opaque, 1=invisible); requires fill
officecli set tables-basic.pptx '/slide[5]/table[1]/tr[4]/tc[2]' \
--prop text="40% transparent fill." --prop fill=4472C4 --prop opacity=0.4
# image — blipFill (picture fill on the cell background)
officecli set tables-basic.pptx '/slide[5]/table[1]/tr[5]/tc[2]' \
--prop image="/path/to/img.png"
# textdirection=vert — vertical text rendering inside a cell
officecli set tables-basic.pptx '/slide[5]/table[1]/tr[6]/tc[2]' \
--prop text="Vertical text" --prop textdirection=vert --prop fill=FFE699
# direction=rtl — RTL paragraph direction within a cell
officecli set tables-basic.pptx '/slide[5]/table[1]/tr[7]/tc[2]' \
--prop text="مرحبا" --prop direction=rtl --prop size=18 --prop fill=A8DADC
# merge.right + bevel + border.right — combined cell properties
officecli set tables-basic.pptx '/slide[5]/table[1]/tr[8]/tc[2]' \
--prop text="Merged, beveled, custom right border." \
--prop fill=F4A261 --prop bevel=circle \
--prop "border.right=2pt solid E63946"
officecli close tables-basic.pptx
officecli validate tables-basic.pptx
```
**Features:** `padding` (uniform; also `padding.top`, `padding.right`, `padding.bottom`, `padding.left`), `opacity` (0.01.0; requires fill), `image` (file path — blipFill on cell background), `textdirection` (vert — vertical text), `direction` (rtl — RTL paragraph), `bevel` (3D bevel preset), `border.right` (per-edge: `Npt solid HEX`)
---
## Complete Feature Coverage
| Feature | Slide |
|---------|-------|
| **data=:** CSV inline population (`,` = cell, `;` = row) | 1 |
| **headerFill / bodyFill:** header + body background colors | 1, 2 |
| **rows / cols:** empty grid creation | 2 |
| **Per-cell set:** `/table[N]/tr[R]/tc[C]` path targeting (1-based) | 25 |
| **fill:** hex, named, rgb(), accent1..6, gradient, none | 3 |
| **style=none:** disable built-in table theme | 35 |
| **border.all:** shorthand uniform border (`Npt solid HEX`) | 35 |
| **italic / underline / strike:** cell text decoration | 4 |
| **font / size:** cell typeface and point size | 4 |
| **wrap=false:** no text wrapping | 4 |
| **linespacing / spacebefore / spaceafter:** paragraph spacing in cell | 4 |
| **padding:** uniform inner margin (also per-edge variants) | 5 |
| **opacity:** fill transparency | 5 |
| **image=:** picture fill on cell background | 5 |
| **textdirection=vert:** vertical text in cell | 5 |
| **direction=rtl:** RTL paragraph in cell | 5 |
| **bevel:** 3D bevel on cell | 5 |
| **border.right / border.left / …:** per-edge borders | 5 |
## Inspect the Generated File
```bash
# List tables on each slide
officecli query tables-basic.pptx '/slide[1]' table
officecli query tables-basic.pptx '/slide[3]' table
# Get fill properties on slide 3
officecli get tables-basic.pptx '/slide[3]/table[1]/tr[2]/tc[2]'
officecli get tables-basic.pptx '/slide[3]/table[1]/tr[5]/tc[2]'
# Check typography on slide 4
officecli get tables-basic.pptx '/slide[4]/table[1]/tr[5]/tc[2]'
officecli get tables-basic.pptx '/slide[4]/table[1]/tr[7]/tc[2]'
# Inspect layout properties on slide 5
officecli get tables-basic.pptx '/slide[5]/table[1]/tr[4]/tc[2]'
officecli get tables-basic.pptx '/slide[5]/table[1]/tr[8]/tc[2]'
```