Loading...

文章背景图

Luckysheet:开源在线 Excel 表格前端组件引入与部署指南

2025-08-19
0
- 字
- 分钟
|

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 仓库封面

上图为 Luckysheet 仓库在 GitHub 上的官方封面图。README 中另附有在线 Demo 的动图演示(LuckysheetDemo.gif),可在在线 Demo 中直接体验表格的实际交互效果;面向多人协作场景,官方还提供了协同编辑 Demo。建议第一次接触 Luckysheet 的读者先打开在线 Demo 实际拖拽几下,再对照本文理解 README 的功能列表与三步引入流程。

四、功能特性(README 原文逐条展开)

官方 README 的 Features 一节列出了七大类能力,逐条翻译并说明如下:

  1. 格式设置(Formatting):样式、条件格式、文本对齐及旋转、文本截断、溢出、自动换行、多种数据类型、单元格内多样式。也就是说,单元格级别的各种视觉表现——从字体、边框、背景色,到按规则变色的条件格式,再到文字在单元格内的对齐与旋转——都在能力范围内,并且支持在同一个单元格内对不同文本片段设置不同样式。
  2. 单元格(Cells):拖拽、下拉填充、多选区、查找和替换、定位、合并单元格、数据验证。这是表格类组件的核心操作集,其中"下拉填充"对应 Excel 的填充柄,"数据验证"用于限制单元格可输入的内容,"定位"则类似 Excel 的定位条件功能,可以快速跳转到指定类型的单元格。
  3. 行和列操作(Row & Column):隐藏、插入、删除行或列,冻结,以及文本分列(split text)。冻结窗格是浏览大表格时的常用手段,文本分列则用于把一列按分隔符拆成多列。
  4. 操作体验(Operation):撤销、重做、复制、粘贴、剪切,快捷键,格式刷,选区拖拽。这些操作让 Luckysheet 用起来和桌面 Excel 几乎一致,降低用户学习成本。
  5. 公式和函数(Formulas & Functions):内置公式、远程公式、自定义公式三种来源都支持。远程公式意味着计算可以委托给后端服务,自定义公式则允许业务方注册自己的函数。
  6. 表格操作(Tables):筛选、排序。
  7. 增强功能(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)。

十二、跳转链接

评论交流

文章目录