Luckysheet:开源在线 Excel 表格前端组件引入与部署指南
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | dream-num/Luckysheet |
| Gitee 镜像 | gitee.com/mengshukeji/Luckysheet |
| 在线文档 | LuckysheetDocs |
| 开源协议 | MIT(Copyright (c) 2020-present, mengshukeji) |
| Star 数 | 约 16.6k(截至本文发布时实时数据) |
二、项目背景与维护状态
重要前提:官方 README 在开头用醒目的位置声明——Luckysheet 已不再维护(no longer maintained),生产环境部署推荐使用其升级版 Univer。README 的原话说明:新版解决了大数据量加载、图表样式、透视表、公式计算等方面的问题,做了很多优化设计,增加了导入、导出、打印、协同等功能,提高了表格性能,并且有专业技术团队提供技术支持。详细迁移背景可查看官方 #1454 issue。
尽管如此,Luckysheet 作为一款成熟的纯前端在线表格组件,仍被大量存量项目使用,其引入方式与功能定义对前端开发者仍有很高参考价值。按照 README 的介绍,Luckysheet 是一款类似 Excel 的在线表格,特点是"功能强大、配置简单、完全开源"(powerful, simple to configure, and completely open source),并且是纯前端实现——这意味着不需要后端服务配合,前端页面引入静态资源后即可得到一个可交互、带公式的电子表格。它在设计上刻意对标桌面端 Excel 的操作习惯:单元格样式、行列冻结、筛选排序、公式函数、数据透视表等常见能力一应俱全,让用户在浏览器里也能获得接近 Excel 的使用体验。
它的典型应用场景包括:企业内部的数据录入与报表页面、低代码平台里的表格组件、在线文档系统中的电子表格模块、需要多人协作填写的填报系统等。README 同时提供了协同编辑 Demo(luckysheet.lashuju.com),说明多人实时编辑也是官方曾重点支持的方向之一。需要强调的是,由于项目已停止维护,新项目尤其是生产环境,应当优先评估 Univer;本文更多是帮助存量用户理解 README 原文、完成接入与二次开发。
三、官方图片

上图为 Luckysheet 仓库在 GitHub 上的官方封面图。README 中另附有在线 Demo 的动图演示(LuckysheetDemo.gif),可在在线 Demo 中直接体验表格的实际交互效果;面向多人协作场景,官方还提供了协同编辑 Demo。建议第一次接触 Luckysheet 的读者先打开在线 Demo 实际拖拽几下,再对照本文理解 README 的功能列表与三步引入流程。
四、功能特性(README 原文逐条展开)
官方 README 的 Features 一节列出了七大类能力,逐条翻译并说明如下:
- 格式设置(Formatting):样式、条件格式、文本对齐及旋转、文本截断、溢出、自动换行、多种数据类型、单元格内多样式。也就是说,单元格级别的各种视觉表现——从字体、边框、背景色,到按规则变色的条件格式,再到文字在单元格内的对齐与旋转——都在能力范围内,并且支持在同一个单元格内对不同文本片段设置不同样式。
- 单元格(Cells):拖拽、下拉填充、多选区、查找和替换、定位、合并单元格、数据验证。这是表格类组件的核心操作集,其中"下拉填充"对应 Excel 的填充柄,"数据验证"用于限制单元格可输入的内容,"定位"则类似 Excel 的定位条件功能,可以快速跳转到指定类型的单元格。
- 行和列操作(Row & Column):隐藏、插入、删除行或列,冻结,以及文本分列(split text)。冻结窗格是浏览大表格时的常用手段,文本分列则用于把一列按分隔符拆成多列。
- 操作体验(Operation):撤销、重做、复制、粘贴、剪切,快捷键,格式刷,选区拖拽。这些操作让 Luckysheet 用起来和桌面 Excel 几乎一致,降低用户学习成本。
- 公式和函数(Formulas & Functions):内置公式、远程公式、自定义公式三种来源都支持。远程公式意味着计算可以委托给后端服务,自定义公式则允许业务方注册自己的函数。
- 表格操作(Tables):筛选、排序。
- 增强功能(Enhanced functions):数据透视表、图表、评论、共享编辑、插入图片、矩阵计算、截图、复制到其他格式、EXCEL 导入及导出等。这一组能力已经接近桌面端 Excel 的高级功能集,其中共享编辑对应多人协同,EXCEL 导入导出对应与桌面文件的互通。
README 同时提示:更详细的功能列表请查阅官方特性文档;而导入、导出、打印这类高级功能,现在官方推荐使用升级版 Univer。
五、生态项目(README 生态表)
README 给出了一组围绕 Luckysheet 的生态工程,方便不同技术栈的项目直接接入:
| 生态项目 | 说明 |
|---|---|
| Luckysheet Vue | 在 vue cli 3 项目中使用 Luckysheet 和 Luckyexcel |
| Luckysheet Vue3 | 在 vue3 + vite 项目中使用 Luckysheet 和 Luckyexcel |
| Luckysheet React | 在 React 项目中使用 Luckysheet |
| Luckyexcel Node | 在 koa2 中使用 Luckyexcel |
| Luckysheet Server | Java 后台 Luckysheet Server |
| Luckysheet Server Starter | LuckysheetServer 一键 docker 部署启动模板 |
可以看到,官方生态覆盖了 Vue2/Vue3/React 三大前端框架,以及 koa2、Java 后端与 docker 一键部署等场景。其中 Luckyexcel 系列负责把 xlsx 文件转换为 Luckysheet 可消费的数据格式,Luckysheet Server 系列则提供多人协同编辑所需的后端能力。
具体来说:Luckysheet Vue 与 Luckysheet Vue3 分别给出在 vue cli 3 与 vue3+vite 工程中同时集成 Luckysheet 与 Luckyexcel 的样例;Luckysheet React 是 React 工程的接入样例;Luckyexcel Node 展示如何在 koa2 后端使用 Luckyexcel;Luckysheet Server 是官方 Java 后端实现;Luckysheet Server Starter 则把 Java 后端进一步打包成 docker 一键启动模板,免去手工配置。业务方可以直接 fork 对应生态工程,在其基础上裁剪成自己的表格应用,而不必从零搭建工程。
六、官方链接一览
README 在"Links"一节给出了完整的入口对照表,国内用户可优先使用 Gitee 镜像加速:
| 资源 | GitHub 路线 | Gitee 路线 |
|---|---|---|
| 源码 | Github | Gitee 镜像 |
| 文档 | 在线文档 | Gitee 在线文档 |
| Demo | 在线 Demo / 协同编辑 Demo | Gitee 在线 Demo |
| 论坛 | 中文论坛 | Google Group |
对国内开发者而言,Gitee 镜像在网络访问速度上明显优于 GitHub, clone 源码与浏览文档都建议先从 Gitee 路线入手。
此外,README 顶部还展示了 Gitter 聊天室徽章与 Twitter 关注入口,说明项目早期曾通过这些海外渠道做社区运营;对国内用户,中文论坛(support.qq.com)是更直接的提问与求助渠道。
七、环境要求
- 浏览器:现代浏览器即可运行纯前端表格;
- 二次开发要求:Node.js 版本 >= 6;
- 构建工具:gulp(全局安装)。
八、部署与使用步骤
8.1 第一步:通过 CDN 引入依赖
README 给出的最简引入方式是通过 CDN 引入 4 个 CSS 文件与 2 个 JS 文件:
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/plugins.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/css/luckysheet.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/assets/iconfont/iconfont.css' />
<script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/js/plugin.js"></script>
<script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/luckysheet.umd.js"></script>
逐段说明:四个 <link> 分别加载插件样式(pluginsCss.css)、插件通用样式(plugins.css)、表格主体样式(luckysheet.css)与图标字体样式(iconfont.css);两个 <script> 先加载插件脚本 plugin.js,再加载表格主体 luckysheet.umd.js。资源全部来自 jsdelivr CDN,使用 luckysheet@latest 指向最新发布版本。引入顺序上必须先加载插件脚本,再加载主体脚本,否则插件注册会失败。
这种 CDN 引入方式的好处是无需 npm 构建,一个静态 HTML 页面就能跑起完整表格,非常适合快速验证和简单页面;缺点是固定走 jsdelivr,国内网络环境下建议评估是否改用本地静态资源或自建 CDN 镜像。
8.2 第二步:指定表格容器
在页面中放置一个全屏容器 div,README 示例的样式是绝对定位铺满整个视口:
<div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;"></div>
容器的 id 默认为 luckysheet,后续创建表格时通过 options 指定它。实际项目中也可以改成固定宽高的局部容器,把表格嵌在页面某个区域内。
8.3 第三步:创建表格
<script>
$(function () {
//Configuration item
var options = {
container: 'luckysheet' //luckysheet is the container id
}
luckysheet.create(options)
})
</script>
这段示例在 jQuery 的 $(function(){...}) 页面就绪回调中执行,核心是构造一个 options 对象(这里只配置了 container 一项,值为上一步的容器 id),然后调用 luckysheet.create(options) 完成表格渲染。实际业务中 options 还可以配置工作表数据、语言、允许的操作等,详见官方文档。整个引入过程只有三步——引资源、放容器、调 create——这正是 README 所说"配置简单"的体现。示例里用 jQuery 只是历史习惯,纯原生 JS 或框架应用在 DOM 就绪后调用同样的 luckysheet.create(options) 即可,无需依赖 jQuery。
8.4 源码二次开发流程
如果要从源码开发或构建 Luckysheet,README 给出的流程是:
npm install
npm install gulp -g
开发模式运行:
npm run dev
打包构建:
npm run build
即先安装项目依赖,再全局安装 gulp 构建工具,之后用 npm run dev 启动开发环境、用 npm run build 产出发布包。README 要求的 Node 版本门槛是 >= 6。注意这里的 npm install gulp -g 是全局安装,用于提供 README 时代的 gulp 构建命令;在较新的 Node 环境上若遇兼容性问题,建议用 nvm 切到 README 对应的 Node 版本再构建。
九、学习资源与社区
README 在"Resources"一节为不同阶段的用户准备了入口:新用户优先阅读 User Guide(Wiki);社区提供的教程、学习材料与配套方案,统一收录在 Tutorials and Resources。版本变更记录维护在 CHANGELOG.md,待办事项则通过 GitHub Projects 管理。沟通渠道包括官方网站、GitHub Discussions、Gitter 聊天室 与中文论坛。README 还提到合作项目 h5-Dooring。
项目是 MIT 协议的开源项目,持续开发依靠捐赠者支持。README 说明了 Patreon 与 OpenCollective 的区别:通过 Patreon 捐赠的资金直接支持作者 mengshukeji 个人在 Luckysheet 上的工作;通过 OpenCollective 捐赠的资金则由公开账本管理,用于补偿核心团队成员的工作与开销或赞助社区活动。两种渠道都会按捐赠者名单公示感谢。README 还列出了一长串按时间排序的个人捐赠者名单,从几元到上千元不等,反映了国内开发者社区对这个项目的实际认可。如果业务方希望长期支持该项目,可以通过 Patreon 或 Open Collective 成为赞助者,也可以通过 PayPal、微信或支付宝进行一次性捐赠。
十、常见问题(FAQ)
- 问:Luckysheet 还能用于新项目吗? 答:官方已明确不再维护,README 推荐生产环境改用升级版 Univer,详见 #1454 issue。
- 问:导入、导出、打印功能在哪? 答:README 说明这类高级功能请使用 Univer;存量项目使用 Luckysheet 时需注意这些能力的支持边界。
- 问:最少引入几个文件? 答:按 README 是 4 个 CSS + 2 个 JS(含插件脚本与主体脚本),全部走 jsdelivr CDN。
- 问:表格容器有要求吗?
答:需要一个带 id 的 div,在 options 中用
container指定该 id;README 示例使用全屏绝对定位容器。 - 问:新人从哪学起? 答:README 建议新用户优先阅读 User Guide(Wiki);社区教程与学习资源见 Tutorials and Resources。
- 问:提 issue 有什么要注意的? 答:README 要求先阅读 Issue 报告清单,不符合规范的 issue 可能被立即关闭;提交 PR 前请先阅读 贡献指南。
- 问:开源协议是什么? 答:MIT,Copyright (c) 2020-present, mengshukeji。
- 问:公式是怎么计算的? 答:README 说明公式支持内置公式、远程公式与自定义公式三种来源,计算既可在浏览器本地完成,也可委托后端服务。远程公式适合复杂计算或需要数据安全的场景,自定义公式则允许业务方注册自己的业务函数。
- 问:多人协同怎么实现? 答:纯前端 Luckysheet 只负责渲染与交互,协同编辑需要配合 Luckysheet Server(Java 后端)或 Luckysheet Server Starter 的 docker 模板,README 生态表中给出了对应仓库。
- 问:国内访问慢怎么办? 答:README 提供了 Gitee 镜像,源码、文档、Demo 都有 Gitee 路线;CDN 资源则可考虑本地化部署。
十一、作者与致谢
README 列出了活跃核心团队成员(@wbfsa、@eiji-th、@fly-95、@tonytonychopper123、@Dushusir、@iamxuchen800117、@wpxp123456、@c19c19i、@zhangchen915、@jerry-f、@flowerField),以及一批社区合作伙伴(@yiwasheng、@danielcai1987、@qq6690876、@javahuang、@TimerGang、@gsw945、@swen-xiong、@lzmch、@kdevilpf、@WJWM0316)。