Univer Sheets API

Univer Sheets 提供专业级电子表格能力,相关概念会尽可能与 Microsoft Excel 保持一致。

引入

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

工作簿 Workbook

一个工作簿里包含多个工作表,可以看作是一个 Excel 文件。

unitId 可用作工作簿的唯一标识。

创建工作簿

univerAPI.createWorkbook(data, options) 方法会创建并返回 FWorkbook 实例。

IWorkbookData 是一个对象,包含了工作簿的配置信息。

TypeScript
const fWorkbook = univerAPI.createWorkbook({ id: 'Sheet1', name: 'Sheet1' })console.log(fWorkbook)

你可以设置一个选项,使添加的工作簿不成为活动工作簿

TypeScript
const fWorkbook = univerAPI.createWorkbook({ id: 'Sheet1', name: 'Sheet1' }, { makeCurrent: false })console.log(fWorkbook)// 3s 后如果想切换到此工作簿setTimeout(() => {  univerAPI.setCurrent(fWorkbook.getId())}, 3000)

获取工作簿数据

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const snapshot = fWorkbook.save()console.log(snapshot)

销毁工作簿

当我们不再需要工作簿时,可以调用 FUniverdisposeUnit 方法来销毁实例。

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const unitId = fWorkbook?.getId()if (unitId) {  univerAPI.disposeUnit(unitId)}

当 Univer 实例挂载的整个页面被销毁或路由被卸载时,务必调用 univer.dispose() 方法进行清理,而不是使用 univerAPI.disposeUnit。 此外,univeruniverAPI 是两个不同的实例,关于如何获取它们的实例,请参考 安装和基本使用

获取工作簿 ID

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()fWorkbook?.getId()

工作表 Worksheet

工作表中存储着表格数据,工作表属于工作薄,

一个工作薄可以包含多个工作表,同一个工作薄中工作表的名称不能重复。

subUnitId 可用作在工作薄中工作表的唯一标识。

获取工作表

获取工作薄中所有工作表

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const sheets = fWorkbook.getSheets()

获取工作薄中当前激活的工作表

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()

获取工作表数据

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const sheetSnapshot = fWorksheet.getSheet().getSnapshot()

创建工作表

下面例子展示通过 FWorkbook.create 方法创建一个工作表。

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()// 创建一个名为 'Sheet2' 的工作表,包含 10 行和 10 列const newSheet = fWorkbook.create('Sheet2', 10, 10)// 创建一个名为 'MyNewSheetWithData' 的新工作表,包含 10 行和 10 列,并带有一些数据,且将其设置为第一个工作表const sheetData = {  // ... 省略其他属性  cellData: {    0: {      0: {        v: 'Hello Univer!',      },    },  },  // ... 省略其他属性}const newSheetWithData = fWorkbook.create('MyNewSheetWithData', 10, 10, {  index: 0,  sheet: sheetData,})console.log(newSheetWithData)

删除工作表

通过传入工作表实例或工作表 ID 来删除工作表

TypeScript
// 删除第二个工作表const fWorkbook = univerAPI.getActiveWorkbook()const sheet = fWorkbook.getSheets()[1]fWorkbook.deleteSheet(sheet)// 下面的代码通过 id 删除指定的工作表// fWorkbook.deleteSheet(sheet.getSheetId());

激活工作表

通过传入工作表实例或工作表 ID 来激活工作表, 或者通过 FWorksheet.activate() 方法激活工作表

TypeScript
// 激活第二个工作表const fWorkbook = univerAPI.getActiveWorkbook()const sheet = fWorkbook.getSheets()[1]fWorkbook.setActiveSheet(sheet)// 通过 id 激活指定的工作表// fWorkbook.setActiveSheet(sheet.getSheetId());// 通过 FWorksheet.activate() 方法激活工作表// sheet.activate();

复制工作表

TypeScript
// 以下代码用于复制指定的工作表const fWorkbook = univerAPI.getActiveWorkbook()const activeSheet = fWorkbook.getActiveSheet()const duplicatedSheet = fWorkbook.duplicateSheet(activeSheet)console.log(duplicatedSheet)

获取工作表 ID

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()fWorksheet?.getSheetId()

设置工作表行列数

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// 设置行数为 100000fWorksheet.setRowCount(100000)// 设置列数为 30fWorksheet.setColumnCount(30)

刷新工作表

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()fWorksheet.refreshCanvas()

工作表缩放

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// 200% 设置缩放比例为 200%fWorksheet.zoom(2)const zoomRatio = fWorksheet.getZoom()

滚动到指定位置

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// 滚动到 D10 单元格const fRange = fWorksheet.getRange('D10')const row = fRange.getRow()const column = fRange.getColumn()fWorksheet.scrollToCell(row, column)// 添加滚动动画持续时间fWorksheet.scrollToCell(row, column, 1000)// 获取滚动状态const scrollState = fWorksheet.getScrollState()const { offsetX, offsetY, sheetViewStartColumn, sheetViewStartRow } = scrollStateconsole.log(scrollState) // sheetViewStartRow: 9, sheetViewStartColumn: 3, offsetX: 0, offsetY: 0

核心功能

权限控制

参考:权限控制

公式

参考:公式

行列操作

参考:行列操作

范围 Range

参考:范围 Range

选区 Selection

参考:选区 Selection

单元格 Cell

参考:单元格 Cell

冻结

参考:冻结

集成自定义组件

参考:集成自定义组件

参考

更多 API 请查看:

你觉得这篇文档如何?

© 2026 DreamNum Co., Ltd.