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_CN,})console.log(statistics.words, statistics.charactersWithSpaces, statistics.paragraphs)

getStatistics() 返回单词、字符和段落数量。通过 ranges 可仅统计选中文本,通过 signal 可取消已不再需要的计算。

你觉得这篇文档如何?

© 2026 DreamNum Co., Ltd.