使用 Luckysheet 可实现 Web 的 Excel

news/2024/7/21 4:13:30 标签: 前端, excel, javascript, html, 开发语言
htmledit_views">

一、写在前面

工作中会遇到html" title=excel>excel的导入和导出,换个角度看,假如有个 web 版本的html" title=excel>excel ,且能上传现有的,修改编辑后再下载也是个不错的方案。 Luckysheet 是实现 web版Excel的一个优秀的框架。

Luckysheet ,一款纯html" title=前端>前端类似html" title=excel>excel的在线表格,功能强大、配置简单、完全开源。

  • 功能强大:包含大量常用电子表格功能,替代你的html" title=excel>excel
  • 配置简单:最少的配置就能开始上手使用
  • 完全开源:社区驱动,共同来完善你的想法

二、我的示例

我的DEMO效果如下:

image.png

第一步:添加依赖JS

<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' />
<script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script>
<script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script>

第二步:指定一个表格容器

<div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;"></div>

第三步:创建一个 Excel 文档并展示

<script>
    $(function () {
        //配置项
        var options = {
            container: 'luckysheet' //luckysheet为容器id
        }
        luckysheet.create(options)
    })
</script>

完成。

三、扩展

3.1 建议采用本地方式引入

(1) 克隆 https://github.com/dream-num/Luckysheet

(2) 使用 npm run build 构建。
(3) 拷贝输出的 dist 所有的文件和文件夹到你的 web工程中。
(4) 更改依赖js,像下面这样:

<link rel='stylesheet' href='./plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='./plugins/plugins.css' />
<link rel='stylesheet' href='./css/luckysheet.css' />
<link rel='stylesheet' href='./assets/iconfont/iconfont.css' />
<script src="./plugins/js/plugin.js"></script>
<script src="./luckysheet.umd.js"></script>

3.2 导入 一个 html" title=excel>excel 文件

点击上传按钮,弹窗选择一个文件,随即文件出现来 页面的表格里。

一个file控件:

<input style="font-size:16px;" type="file" @change="uploadExcel" />

绑定的js事件:

uploadExcel(evt){
        const files = evt.target.files;
        if(files==null || files.length==0){
            alert("No files wait for import");
            return;
        }

        let name = files[0].name;
        let suffixArr = name.split("."), suffix = suffixArr[suffixArr.length-1];
        if(suffix!="xlsx"){
            alert("Currently only supports the import of xlsx files");
            return;
        }
        LuckyExcel.transformExcelToLucky(files[0], function(exportJson, luckysheetfile){

            if(exportJson.sheets==null || exportJson.sheets.length==0){
                alert("Failed to read the content of the html" title=excel>excel file, currently does not support xls files!");
                return;
            }
            window.luckysheet.destroy();

            window.luckysheet.create({
                myFolderUrl:'',
                container: 'luckysheet', //luckysheet is the container id
                showinfobar:false,
                data:exportJson.sheets,
                title:exportJson.info.name,
                userInfo:exportJson.info.name.creator
            });
        });
    },

3.3 下载(另存为)Excel

import { exportExcel } from '../js/export';

saveExcel(){
        console.log('另存为');
        var json = window.luckysheet.getAllSheets();
        console.log(json);
        //第2个参数是导出的文件名
        exportExcel(json, "下载");
    }

这里用到了 export.js ,可以从这里获得:https://blog.csdn.net/weixin_41897680/article/details/123986004

3.4 隐藏顶部的信息栏

默认是有信息栏的,包含了logo ,返回上一页的按钮等。可通过参数设置。

参数:

  • myFolderUrl:'', // 指定返回上一页的URL
  • showinfobar:false,//是否显示顶部信息栏

更多参数见 https://dream-num.github.io/LuckysheetDocs/zh/guide/config.html#%E9%85%8D%E7%BD%AE%E9%A1%B9

示例:

luckysheet.create({
              myFolderUrl:'', // 指定返回上一页的URL
              showinfobar:false,//是否显示顶部信息栏
              container: 'luckysheet', // 设定DOM容器的id
              title: 'Luckysheet 测', // 设定表格名称
              lang: 'zh', // 设定表格语言
})

四、参考

感谢下面文章的作者撰写的好文。

中文文档:https://dream-num.github.io/LuckysheetDocs/zh/https://dream-num.github.io/LuckysheetDocs/zh/guide/config.html#%E5%8D%95%E5%85%83%E6%A0%BC

VUE示例:https://github.com/dream-num/luckysheet-vue

在vue中简单使用Luckysheet(有下载功能示例)https://blog.csdn.net/weixin_41897680/article/details/123986004

官网地址:https://github.com/dream-num/Luckysheet

官方文档:https://mengshukeji.gitee.io/luckysheetdocs/zh/guide/https://www.cnblogs.com/recode-hyh/p/13168226.html

常见问题:https://mengshukeji.gitee.io/LuckysheetDocs/guide/FAQ.html

https://juejin.cn/post/7221368910139342907?share_token=78cb819c-539d-4b8b-aae6-f67a0a357f82


http://www.niftyadmin.cn/n/272369.html

相关文章

零售新时代,零售行业数字化破局的新路径

深夜11点&#xff0c;门店店长小张还在加班&#xff0c;因为小张还需要盘点今日销售额、库存等信息&#xff0c;这些整理好的数据需要手动录入至总公司的系统中。 多门店的零售行业中&#xff0c;这是他们每天的工作日常&#xff1a;门店先通过excel做手工报表&#xff0c;再把…

Semantic Kernel 知多少 | 开启面向 AI 编程新篇章

在 ChatGPT 火热的当下, 即使没有上手亲自体验&#xff0c;想必也对 ChatGPT 的强大略有耳闻。当一些人在对 ChatGPT 犹犹豫豫之时&#xff0c;一些敏锐的企业主和开发者们已经急不可耐地开展基于 ChatGPT 模型 AI 应用的落地探索。 因此&#xff0c;可以明确预见的是&#xf…

终于把 vue-router 运行原理讲明白了(一)!!!

一、vue-router 用法 1.1 首先我们需要在我们的项目中&#xff0c;下载vue-router&#xff0c;我在项目中使用的是3.x版本 1.2 在项目中引入&#xff0c;并实例化路由实例&#xff0c;贴代码如下 1.3 下面代码有两个重点部分&#xff0c;等在第三部分具体分析 &#xff08;1&a…

Dockere-Compose迁移Gitea部署

Dockere-Compose迁移Gitea部署 ps: 江湖不是打打杀杀&#xff0c;江湖是人情事故。 解释&#xff1a; Gitea&#xff1a;类似于Git的代码版本管理工具。Docker&#xff1a;Docker-Compose&#xff1a; Docker命令&#xff1a; 查看镜像&#xff1a;docker images 删除镜像…

大数据Doris(六):BE部署及启动

文章目录 BE部署及启动 一、上传安装包并解压 二、修改be.conf 配置文件

4个很多人都不知道的现代JavaScript技巧

JavaScript在不断的进化和升级&#xff0c;越来越多的新特性让我们的代码变得更加简洁。因此&#xff0c;今天这篇文章&#xff0c;我将跟大家分享 4 个不常用的 JavaScript 运算符。让我们一起研究它们。 1.可选的链接运算符 这个功能非常好用&#xff0c;它可以防止我的代码…

mysql 8 转达梦8 处理总结

环境: mysql 8.0 达梦免费版本 8.1.128_ent_x86_64_ctm_pack4 1.大小写敏感的配置 初始化实例时 设置的兼容模式 要兼容mysql 字符编码 2.函数的区别 if 需要转换 find_in_set 需要重新自定义 ipv4, ipv6的处理函数 需要重新自定义 order by大字段问题 group by 大字段问题…

【在线研讨会】智慧汽车时代来临 -车规功能安全软硬件一次到位

随着科技的不断发展&#xff0c;智慧汽车的时代已经到来&#xff0c;在实现智慧汽车的过程中&#xff0c;车辆的功能安全、软硬件设计等方面都面临着严峻的挑战。为了确保智慧汽车的安全性和可靠性&#xff0c;在硬件设计方面&#xff0c;需要考虑到各种可能出现的故障和安全风…