表格

插件信息

註冊表格能力

Slides 表格能力拆分為模型套件和 UI 套件:

TypeScript
import { UniverSlidesTablePlugin } from '@univerjs-pro/slides-table'import { UniverSlidesTableUIPlugin } from '@univerjs-pro/slides-table-ui'import SlidesTableUIEnUS from '@univerjs-pro/slides-table-ui/locale/en-US'import '@univerjs-pro/slides-table-ui/lib/index.css'import '@univerjs-pro/slides-table/facade'univer.registerPlugin(UniverSlidesTablePlugin)univer.registerPlugin(UniverSlidesTableUIPlugin)

行動裝置支援

先設定行動版編輯器。在本頁外掛模式的初始化程式碼中,將下列桌面版註冊替換為同一套件匯出的行動版外掛,並在開啟文件前完成。保留模型外掛、樣式、語言套件與 Facade 匯入,請勿同時註冊兩個版本。

套件桌面版註冊行動版註冊
@univerjs-pro/slides-table-uiUniverSlidesTableUIPluginUniverSlidesTableMobileUIPlugin

套件職責

  • @univerjs-pro/slides-table 將表格元素接入 slide 模型,並提供表格相關 facade API。
  • @univerjs-pro/slides-table-ui 提供瀏覽器編輯 UI、渲染整合、選取行為和右鍵選單操作。

Runtime 選擇

瀏覽器編輯器使用兩個套件。Node.js 處理場景通常只需要模型套件,除非你還需要瀏覽器渲染能力。

TypeScript
univer.registerPlugin(UniverSlidesPlugin)univer.registerPlugin(UniverSlidesTablePlugin)

如果需要開啟或匯入可能包含表格元素的 deck,請在處理前註冊表格能力,否則 runtime 無法完整解釋這些元素。

穩定的表格色彩

插入表格或變更表格樣式時,外掛會將目前主題色盤解析成該表格自有的主題快照。因此,即使全域 Univer 主題發生變化,既有表格仍會保留原本的色彩;選取其他表格樣式時則會建立新的快照。標準 Facade 操作會自動管理這個過程。

Facade API

匯入 facade 入口後,FSlide 會增加表格相關方法:

TypeScript
import '@univerjs-pro/slides-table/facade'

從純文字二維陣列建立表格:

TypeScript
const fPresentation = univerAPI.getActivePresentation()const fSlide = fPresentation.getSlideById('slide-1')const table = fSlide.insertTableFromData(  [    ['Quarter', 'Owner', 'Status'],    ['Q1', 'Sales', 'Done'],    ['Q2', 'Marketing', 'In progress'],  ],  {    id: 'status-table',    rowHeight: 42,    columnWidth: 160,  },)

如果需要明確控制位置和尺寸,可以使用 table builder:

TypeScript
const tableInfo = fSlide.newTable()  .setValues([    ['Metric', 'Value'],    ['Revenue', '$120K'],  ])  .setRows(2)  .setColumns(2)  .setAbsolutePosition(80, 120)  .setSize(420, 180)  .build()const table = fSlide.insertTable(tableInfo)

讀取和更新表格儲存格:

TypeScript
const table = fSlide.getTableById('status-table') ?? fSlide.getTableAt(0)if (table) {  console.log(table.describe())  console.log(table.getCellText(0, 0))  table.getCell(1, 2)?.setText('Blocked')  table.getCell(0, 0)?.setBackgroundColor('#E8F1FF')}

更新或刪除既有表格:

TypeScript
const table = fSlide.getTableById('status-table')if (table) {  const nextTableInfo = table.toBuilder()    .setValues([      ['Quarter', 'Owner', 'Status'],      ['Q1', 'Sales', 'Done'],      ['Q2', 'Marketing', 'Blocked'],    ])    .setSize(480, 200)    .build()  fSlide.updateTable(nextTableInfo)  fSlide.removeTable(table)}

表格的行列索引從 0 開始。Builder 的行列數量會自動擴展以容納傳入的值,因此對於簡單表格,可以把 setValues() 作為資料來源。

你覺得這篇文檔如何?

© 2026 DreamNum Co., Ltd.