使用 Luckysheet 可实现 Web 的 Excel

news2024/11/25 20:36:36

一、写在前面

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

Luckysheet ,一款纯前端类似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 导入 一个 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 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.coloradmin.cn/o/471893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用nvm在Windows上管理Node版本

1.卸载Windows上安装的Node.js 首先需要卸载我们现在安装的Node.js&#xff0c;控制面板->卸载程序->卸载Node.js 2.下载安装配置nvm 1.下载 GitHub下载链接:https://github.com/coreybutler/nvm-windows/releases 需要下载黄色方框圈中的nvm-setup.exe或者nvm-setup.zip…

数据结构学习分享之复杂度讲解

数据结构第一课 1. 前言2. 数据结构前言2.1 什么是数据结构和算法?2.2 数据结构和算法的重要性2.3 如何学好数据结构和算法?2.4 一些文章和书籍 3. 算法效率3.1 算法的复杂度3.2 复杂度在面试中的考察 4. 时间复杂度4.1 时间复杂度概念4.2 大O的渐近表示法4.3 判断时间复杂度…

从大厂到创业公司,管理上需要怎样转变?

你好&#xff0c;我是舒超。 我职业生涯过去十年的上半段在腾讯负责微博微群、消息流广告、视频评论等社交型的业务系统&#xff0c;下半段在美团基础架构负责云原生基础设施的演进工作&#xff0c;现在星汉未来担任CTO&#xff0c;负责公司产研推进工作。加入星汉未来的时间点…

策略模式——时势造英雄

● 策略模式介绍 在软件开发中常常遇到这样的情况&#xff1a;实现某一个功能可以有多种算法或者策略&#xff0c;我们根据实际情况选择不同的算法或者策略来完成该功能。例如&#xff0c;排序算法&#xff0c;可以使用插入排序、归并排序、冒泡排序。 针对这种情况&#xff0c…

AppWeb 身份验证绕过漏洞 (CVE-2018-8715)

当前漏洞环境部署在vulhub,当前验证环境为vulhub靶场&#xff08;所有实验均为虚拟环境&#xff09; 实验环境&#xff1a;攻击机----kali 靶机&#xff1a;centos7 1、进入靶场&#xff0c;启动环境 2、访问AppWeb控制台&#xff1a;http://your-ip:8080 使用用户名、密码adm…

全景丨0基础学习VR全景制作,平台篇第14章:热点功能-漫游

大家好&#xff0c;欢迎观看蛙色VR官方——后台使用系列课程&#xff01; 后台功能位置示意 热点&#xff0c;指在全景作品中添加各种类型图标的按钮&#xff0c;引导用户通过按钮产生更多的交互&#xff0c;增加用户的多元化体验。 漫游热点&#xff0c;即场景切换热点&#…

Jetpack Navigation 源码(一)

当然要先看官网文档&#xff1a;https://developer.android.google.cn/guide/navigation/navigation-getting-started?hlzh-cn 先从FragmentContainerView 开始 首页它是一个View image.png 注意它的name属性 image.png name属性的fragment 是怎么添加到这个View的(当然fragme…

关于Maven,你真的了解它吗?

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 目录 一. Maven有哪些核心概念&#xff1f;1.1 Maven中的POM1.2 Maven约定的目录结构1.3 Maven生命周期1.4 Maven的插件和目标1.5 Maven中的…

【面试】MySQL事务的12连问

文章目录 前言1. 什么是数据库事务&#xff1f;2. 事务的四大特性3. 事务的隔离级别有哪些&#xff1f;MySQL的默认隔离级别是什么&#xff1f;4. Mysql为什么选择RR作为默认隔离级别&#xff1f;5. 很多大厂为什么选择RC数据库隔离级别&#xff1f;6. 并发场景&#xff0c;数据…

经典回归算法

回归的概念 回归方程&#xff1a; 写成矩阵&#xff1a; 核心问题&#xff0c;构建预测函数z来映射特征矩阵x和标签y的线性关系 预测的目标值&#xff0c;有连续值也有离散值 连续值&#xff0c;就直接预测输出就行离散值&#xff0c;需要在输出端加一个变换函数例如。Si…

入参校验产品化 schema

与规则引擎不同,规则面向技术, 传入data, 返回 所有异常字段和原因. 面向技术, 先有对象,再有规则, 如何通过交互来编写schema是个难题? 和json-schema区别: 思路上就是反过来的, 面相产品, schema可视化编辑器, 是面向结构设计. 现有模型,才有数据, 才可以编程. 基于配置…

Docker安装运行Nginx容器(纯步骤)

Docker安装Nginx容器并运行 本文章只有步骤&#xff0c;没有原理解释&#xff0c;只做平时学习提示。提前说明&#xff1a;由于nginx里的配置文件比较多&#xff0c;所以本文章不对此配置文件解释而且会有一些小问题&#xff0c;这个你酌情操作&#xff0c;但不影响你nginx容器…

化工厂5G+北斗RTK室外人员定位系统解决方案

化工厂的安全管理工作非常重要&#xff0c;为了确保员工的安全和提高生产效率&#xff0c;建议引入人员定位技术。下面给大家介绍化工厂5G北斗RTK室外人员定位系统解决方案。关于化工厂室内人员定位方案&#xff0c;可以参考我之前写的文章&#xff1a;化工厂5G蓝牙LoRa室内人员…

声网 Token 鉴权机制,以及常见的问题

Token鉴权是什么&#xff1f; Token也称为动态密钥&#xff0c;是在加入频道时用于校验用户权限的一组字符串&#xff1b;鉴权是指在用户访问你的系统前&#xff0c;对其进行身份校验。用户在使用声网服务&#xff0c;如加入音视频通话或登录信令系统时&#xff0c;声网会使用…

广州华锐互动:工厂园区数字孪生系统让企业管理更加高效便捷

随着信息技术的快速发展&#xff0c;企业管理越来越倾向于数字化和智能化&#xff0c;而数字孪生技术在这一领域中扮演着重要角色。 工厂园区数字孪生系统是一种基于数字孪生技术的智能化系统&#xff0c;可以模拟工厂生产过程&#xff0c;将真实场景数字化&#xff0c;并进行…

高阶数据结构 ——— 并查集

文章目录 并查集并查集的原理并查集的实现并查集的初始化查找元素所在的集合合并两个元素所在的集合获取并查集中集合的个数并查集的路径压缩元素的编号问题 并查集的题目省份的数量等式方程的可满足性 并查集 并查集是一种树型的数据结构&#xff0c;用于处理一些不相交集合的…

如何合理使用 Jetpack 组件开发 Android 项目?

Jetpack 是 Android 官方推出的一套开发库&#xff0c;其中包含众多的组件&#xff0c;可以让 Android 开发者更快更高效地开发应用程序。Jetpack 组件分为四大部分&#xff1a;架构、行为、UI 和基础组件。 下面详细阐述如何合理使用 Jetpack 组件开发 Android 项目。 1. 熟练…

openQA----基于openSUSE部署openQA

【原文链接】openQA----基于openSUSE部署openQA &#xff08;1&#xff09;下载 openqa-bootstrap 脚本并执行 cd /opt/ curl -s https://raw.githubusercontent.com/os-autoinst/openQA/master/script/openqa-bootstrap | bash -x&#xff08;2&#xff09;配置apache proxy…

Nestjs全网最佳翻译-概况-守卫-Guards

守卫 带上装饰器 Injectable() 并实现了 CanActivate 接口的类&#xff0c;就是守卫。 守护只做一件事情。他们根据运行时的某些条件&#xff08;如权限、角色、ACL等&#xff09;来决定一个给定的请求是否会被路由处理程序处理。这通常被称为授权。在传统的Express应用程序中…

浅析AI视频智能检测技术在城市管理中的场景应用

随着中国的城市建设和发展日益加快&#xff0c;城镇化过程中重建设、轻管理模式带来不少管理难点&#xff0c;传统城管模式存在违法问题多样、缺乏源头治理、业务协同难、取证手段单一等&#xff0c;人员不足问题进一步加剧管理难度。随着移动互联网、物联网、云计算、大数据、…