项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-09-22 · 当前星标 ★ 22910
技术标签
使用教程
环境要求
- Node.js 运行环境(README 未指定具体版本)
- 使用 pnpm 作为包管理器(README 全部命令均为 pnpm add)
- 一个可运行的前端工程,页面中需有承载 Univer 的容器元素
- 若在服务端使用,需 Node.js 环境(README 称 Facade API 同时支持浏览器与 Node.js)
安装与启动步骤
-
1准备页面容器
在页面中放置一个带 id 的容器,Univer 的 UI 会挂载到该元素上,示例 id 为 app。
<div id="app" style="height: 100vh"></div> -
2安装插件模式依赖
插件模式可精细控制包、样式、语言包与 Facade 注册,依赖较多但可控性最强。
pnpm add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/sheets @univerjs/sheets-formula @univerjs/sheets-formula-ui @univerjs/sheets-numfmt @univerjs/sheets-numfmt-ui @univerjs/sheets-ui @univerjs/ui -
3引入模块与样式
必须导入各 UI 包的 index.css,并导入各包的 /facade 入口,否则样式缺失、Facade API 不可用。
import { LocaleType, mergeLocales, Univer } from '@univerjs/core' import { FUniver } from '@univerjs/core/facade' import { UniverDocsPlugin } from '@univerjs/docs' import { UniverDocsUIPlugin } from '@univerjs/docs-ui' import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula' import { UniverRenderEnginePlugin } from '@univerjs/engine-render' import { UniverSheetsPlugin } from '@univerjs/sheets' import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula' import { UniverSheetsFormulaUIPlugin } from '@univerjs/sheets-formula-ui' import { UniverSheetsNumfmtPlugin } from '@univerjs/sheets-numfmt' import { UniverSheetsNumfmtUIPlugin } from '@univerjs/sheets-numfmt-ui' import { UniverSheetsUIPlugin } from '@univerjs/sheets-ui' import { UniverUIPlugin } from '@univerjs/ui' import '@univerjs/design/lib/index.css' import '@univerjs/ui/lib/index.css' import '@univerjs/docs-ui/lib/index.css' import '@univerjs/sheets-ui/lib/index.css' import '@univerjs/sheets-formula-ui/lib/index.css' import '@univerjs/sheets-numfmt-ui/lib/index.css' import '@univerjs/engine-formula/facade' import '@univerjs/ui/facade' import '@univerjs/sheets/facade' import '@univerjs/sheets-ui/facade' im -
4创建实例并注册插件
用 new Univer 传入 locale 与合并后的语言包,再逐个 registerPlugin;UI 插件的 container 需与页面容器 id 一致。
const univer = new Univer({ locale: LocaleType.EN_US, locales: { [LocaleType.EN_US]: mergeLocales( DesignEnUS, UIEnUS, DocsUIEnUS, SheetsEnUS, SheetsUIEnUS, SheetsFormulaEnUS, SheetsFormulaUIEnUS, SheetsNumfmtUIEnUS, ), }, }) univer.registerPlugin(UniverRenderEnginePlugin) univer.registerPlugin(UniverFormulaEnginePlugin) univer.registerPlugin(UniverUIPlugin, { container: 'app' }) univer.registerPlugin(UniverDocsPlugin) univer.registerPlugin(UniverDocsUIPlugin) univer.registerPlugin(UniverSheetsPlugin) univer.registerPlugin(UniverSheetsUIPlugin) univer.registerPlugin(UniverSheetsFormulaPlugin) univer.registerPlugin(UniverSheetsFormulaUIPlugin) univer.registerPlugin(UniverSheetsNumfmtPlugin) univer.registerPlugin(UniverSheetsNumfmtUIPlugin) -
5创建空白工作簿
通过 FUniver.newAPI 拿到 Facade API,再调用 createWorkbook 渲染出表格界面。
const univerAPI = FUniver.newAPI(univer) univerAPI.createWorkbook({}) -
6安装 Preset 模式依赖
若只需 Sheets/Docs/Node 等受支持场景,可用 Preset 模式,包与配置更少,开箱即用。
pnpm add @univerjs/presets @univerjs/preset-sheets-core -
7用 Preset 初始化
用 createUniver 直接传入 presets 数组,Preset 已内置必要的 Facade 注册与样式引入。
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core' import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US' import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets' import '@univerjs/preset-sheets-core/lib/index.css' const { univerAPI } = createUniver({ locale: LocaleType.EN_US, locales: { [LocaleType.EN_US]: mergeLocales(UniverPresetSheetsCoreEnUS), }, presets: [ UniverSheetsCorePreset({ container: 'app', }), ], }) univerAPI.createWorkbook({})
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
locale | 是 | 设置界面语言,README 示例使用英文枚举 | LocaleType.EN_US |
locales | 是 | 注册语言包,需用 mergeLocales 合并各模块语言文案 | mergeLocales(UniverPresetSheetsCoreEnUS) |
container | 是 | UI 插件挂载的容器元素 id,需与页面上的 id 一致 | app |
presets | 否 | Preset 模式下传入预设集合,替代逐个注册插件 | [UniverSheetsCorePreset({ container: 'app' })] |
如何确认成功
页面容器中出现可编辑的电子表格工作簿界面(或 Node 端成功执行 createWorkbook 不报错),即为启动成功。
常见问题
Q:插件模式和 Preset 模式我应该选哪个?
A:需要完整产品覆盖和精确裁剪时用插件模式,可控制包、样式、语言包与 Facade 注册;只做 Sheets、Docs 或 Node 等受支持场景时用 Preset 模式,配置更短更快。
Q:为什么不导入 CSS 界面会错乱?
A:README 明确要求手动导入 @univerjs/design、@univerjs/ui、@univerjs/docs-ui、@univerjs/sheets-ui 等包的 lib/index.css,遗漏就会缺少样式。
Q:调用 univerAPI 时提示方法不存在怎么办?
A:需要额外 import '@univerjs/xxx/facade' 各包的 facade 入口(如 sheets/facade、ui/facade),README 的插件模式示例中已列出这些导入。
Q:可以在 Node.js 服务端运行吗?
A:可以,README 说明 Facade API 同时适用于浏览器和 Node.js,可用同一套架构在服务端处理工作簿/文档。
注意事项
- README 只提供了 pnpm 的安装命令,未给出 npm/yarn 的安装方式,请勿自行替换包管理器。
- 页面必须有 id 为 app(或自定义后同步传给 container)的容器元素,否则 UI 无处挂载。
- 各 UI 包的 index.css 与各包的 /facade 导入顺序在示例中已给出,建议原样保留。
- README 未说明 Node 版本要求、开发服务器启动或构建命令,相关步骤需参考官网文档。
核心亮点
- 统一运行时覆盖表格/文档/幻灯片/画布/PDF,避免多套引擎拼装
- TypeScript 编写,提供 SDK 和插件机制,方便二次开发与 AI 集成
- 支持实时协作和公式计算,具备生产级办公能力
不足之处
- 项目体量大,上手和定制需要较高学习成本
- 部分高级功能(如 PDF 编辑)成熟度可能不如专注型工具
适用场景
- 在 SaaS 产品中嵌入可编程电子表格,让 AI 自动生成报表
- 构建多人实时协作的文档/幻灯片编辑平台
- 为 AI Agent 提供统一办公文档读写接口,实现跨类型自动化
替代项目
Luckysheet、OnlyOffice、Collabora Online
上一篇:zettelrobbe
下一篇:docx-editor
同类项目推荐
Noted
开源
开会不用记,边聊边出摘要还能问答
A full-stack real-time transcription app with rolling summaries, topic detection, an···
LLM-Minutes-of-Meeting
开源
上传会议录音,自动出文字稿和纪要
Turn audio and video recordings into transcripts, decisions and action items. Suppor···
export-chatgpt
开源
一键备份ChatGPT全部对话,团队版也能用
Export ALL ChatGPT Conversations. WORKS with ChatGPT Business (aka ChatGPT Team) Pla···
note-gen
开源
随手记,AI帮你自动整理成清晰笔记,本地存储更安心。
Capture first. Organize later. A local-first Markdown app that turns scattered recor···
video-to-notes
开源
视频字幕转带时间戳笔记,一键导出知识库
Local-first video-to-notes CLI for YouTube/Bilibili transcripts, Whisper fallback, t···
kian
开源
一个尚在萌芽的办公效率小工具,等你来探索
Hello, I'm Kian.
docx-editor
开源
让 AI 直接读写 Word 文档,不用再手动解析格式
SuperDoc - DOCX Editor and Agent SDK for reviewing, filling, and editing documents. ···
PPT-Design-Skill
开源
一句话生成4万种风格、可编辑的专业PPT
Precision PPT design skill for OpenCode/Claude Code/Codex, with 40,000+ styles, pixe···
cicada
开源
知了 Cicada · 任何会议和直播的实时字幕、同声传译、AI 会议纪要,Mac、Windows、Linux、···
