Univer Docs API

Univer Docs 提供專業級文件排版能力,相關概念會儘可能與 Microsoft Word 保持一致。

引入

TypeScript
import '@univerjs/docs/facade'import '@univerjs/docs-ui/facade'

操作文件

文件單元中 unitId 對應的是文件的唯一標識,文件不存在 subUnitId。

文件的文字內容儲存在 body.dataStream 字串中,此字串不包含樣式資訊。

樣式資訊單獨儲存在另外的資料結構中,並透過下標索引與文字內容關聯。

對於換行、分頁、章節、段落、表格等元素, 在文字內容中使用不同的特殊字元來標記,這些特殊字元在渲染時被轉換為對應的元素。

想要進一步瞭解文件的資料結構設計嗎?推薦閱讀《Univer 文件架構及模組設計》 和《Univer 文件排版設計初探》。

建立文件

使用 univerAPI.createDocument(data) 建立新的文件,並取得對應的 FDocument facade 包裝物件。

參數是一個可選的文件資料物件,包含了文件的初始資料。如果傳入 {},則建立一個空文件。

如果直接使用底層 univer 實例而不是 Facade API,則使用 univer.createUnit(UniverInstanceType.UNIVER_DOC, data)。

TypeScript
const doc = univerAPI.createDocument(data)

獲取文件 unitId

TypeScript
const doc = univerAPI.getActiveDocument()const unitId = doc?.getId()

獲取文件資料

TypeScript
const doc = univerAPI.getActiveDocument()const saveData = doc.save()

銷燬文件

當我們不再需要文件時,可以呼叫 Univer 例項的 dispose 方法來銷燬例項。

TypeScript
univer.dispose()

操作文字

對富文字區域的文字元素進行操作

插入文字

將指定的文字新增到此文字區域的末尾。

TypeScript
const doc = univerAPI.getActiveDocument()doc?.insertText(0, 'Univer')

刪除文字

按文件偏移刪除文字。

TypeScript
const doc = univerAPI.getActiveDocument()doc?.deleteRange({ startOffset: 0, endOffset: 1 })

修改樣式

設定段落中的文字樣式。

TypeScript
const doc = univerAPI.getActiveDocument()const paragraph = doc?.getParagraphs()[0]paragraph?.setStyle({  textStyle: {    cl: {      rgb: '#FF0000',    },  },})

插入分頁符

\f 為分頁符,用於在文件中插入分頁符。

TypeScript
const doc = univerAPI.getActiveDocument()doc?.insertText(0, '\f')

文件統計

透過底層 DocumentDataModel 統計整份文件或指定文字範圍。

TypeScript
const doc = univerAPI.getActiveDocument()if (!doc) throw new Error('No active document')const statistics = await doc.getDocumentDataModel().getStatistics({  locale: univerAPI.Enum.LocaleType.ZH_TW,})console.log(statistics.words, statistics.charactersWithSpaces, statistics.paragraphs)

getStatistics() 會傳回單字、字元與段落數量。透過 ranges 可只統計選取的文字,透過 signal 可取消已不再需要的計算。

你覺得這篇文檔如何?

© 2026 DreamNum Co., Ltd.