基于luckysheet实现在线电子表格和Excel在线预览

news2024/9/23 7:30:13

概述

本文基于luckysheet实现在线的电子表格,并基于luckyexcel实现excel文件的导入和在线预览。

效果

在线编辑器

在线预览

实现

1. luckysheet介绍

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

  • 官方文档
  • 在线Demo

2. 实现

2.1 引入插件

本实例中直接引入编译好的js和css文件,需要引入的文件如下:

<link rel="stylesheet" type="text/css" href="/lib/luckysheet/luckysheet.css" />
<script src="/lib/luckysheet/plugin.js"></script>
<script src="/lib/luckysheet/luckysheet.umd.js"></script>
<script src="/lib/luckysheet/luckyexcel.umd.js"></script>

2.2 在线编辑器实现

<template>
  <div class="online-table" :id="domId"></div>
</template>

<script>
export default {
  props: {
    tableData: {
      type: Object,
      default: () => null,
    },
    name: {
      type: String,
      default: '新建表格',
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.init()
    })
  },
  watch: {
    tableData() {
      this.init()
    },
  },
  data() {
    return {
      domId: 'onlineTableDom',
    }
  },
  unmounted() {
    window.luckysheet.destroy()
  },
  methods: {
    init() {
      let options = {
        container: this.domId,
        title: this.name,
        lang: 'zh',
        showinfobar: false, // 右上角的用户信息展示样式
        plugins: [],
      }
    options.showtoolbarConfig = {
          undoRedo: false,
          currencyFormat: false, //货币格式
          percentageFormat: false, //百分比格式
          numberDecrease: false, // '减少小数位数'
          numberIncrease: false, // '增加小数位数
          textRotateMode: false, // '文本旋转方式'
          image: false, // '插入图片'
          chart: false, // '图表'(图标隐藏,但是如果配置了chart插件,右击仍然可以新建图表)
          postil: false, //'批注'
          screenshot: false, // '截图'
          findAndReplace: false, // '查找替换'
          moreFormats: false, // '更多格式'
      }
      if (this.tableData) options.data = this.tableData.data
      window.luckysheet.create(options)
    },
    getData() {
      return window.luckysheet.toJson()
    },
  },
}
</script>

<style scoped lang="scss">
.online-table {
  width: 100%;
  height: calc(100% - 4rem);
}
</style>

2.3 打开Excel文件

LuckyExcel.transformExcelToLucky(
	file, 
	function(exportJson, luckysheetfile){
		// 获得转化后的表格数据后,使用luckysheet初始化,或者更新已有的luckysheet工作簿
		// 注:luckysheet需要引入依赖包和初始化表格容器才可以使用
		luckysheet.create({
			container: 'luckysheet', // luckysheet is the container id
			data:exportJson.sheets,
			title:exportJson.info.name,
			userInfo:exportJson.info.name.creator
		});
	},
	function(err){
		logger.error('Import failed. Is your fail a valid xlsx?');
	}
);

2.4 在线预览excel

        const url = this.fileUrl
        window.LuckyExcel.transformExcelToLuckyByUrl(url, '测试文件', function (exportJson) {
          if (exportJson.sheets == null || exportJson.sheets.length == 0) {
            return
          }
          window.luckysheet.create({
            container: 'attachment',
            data: exportJson.sheets,
            title: exportJson.info.name,
            userInfo: exportJson.info.name.creator,
            showtoolbar: false, // 是否显示工具栏
            showinfobar: false, // 是否显示顶部信息栏
            allowEdit: false,
            enableAddRow: false, // 允许增加行
            enableAddCol: false, // 允许增加列
            showRowBar: false, // 是否显示行号区域
            showColumnBar: false, // 是否显示列号区域
            sheetFormulaBar: false, // 是否显示公式栏
            enableAddBackTop: false, //返回头部按钮
            rowHeaderWidth: 0, //纵坐标
            columnHeaderHeight: 0, //横坐标
            showstatisticBarConfig: {
              count: false,
              view: false,
              zoom: false,
            },
            hook: {
              cellMousedown() {
                return false
              },
            },
            showsheetbarConfig: {
              add: false, //新增sheet
              menu: false, //sheet管理菜单
              sheet: true, //sheet页显示
            },
            forceCalculation: true, //强制计算公式
          })
        })

相关文章
  • Vue中使用mind-map实现在线思维导图
  • Vue中实现在线画流程图实现
  • 基于语雀编辑器的在线文档编辑与查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939661.html

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

相关文章

配置单区域OSPF

目录 引言 一、搭建基础网络 1.1 配置网络拓扑图如下 1.2 IP地址表 二、测试每个网段都能单独连通 2.1 PC0 ping通Router1所有接口 2.2 PC1 ping通Router1所有接口 2.3 PC2 ping通Router2所有接口 2.4 PC3 ping通Router2所有接口 2.5 PC4 ping通Router3所有接口 2.…

力扣 28找到字符串中第一个匹配项的下标 KMP算法

思路&#xff1a; 朴素匹配有很多步骤是多余的 KMP算法能够避免重复匹配 KMP算法主要是根据子串生成的next数组作为回退的依据&#xff0c;它记录了模式串与主串(文本串)不匹配的时候&#xff0c;模式串应该从哪里开始重新匹配。 这里讲一下为什么用模式串的最大公共前后缀…

基于python的当当二手书数据分析与可视化系统设计与实现

1.1 研究背景及现状 1.1.1 研究背景 生态文明建设是我国的基本国情之一&#xff0c;资源利用作为应该重要的环节[1]。然而随着大学校园内掀起倡导的低碳环保热潮&#xff0c;高校学生教材及其他书籍的目前的处理方式已被大多人所关注[2]。从循环利用资源的角度出发[3]&…

封装MAVSDK为JAR包并导出给其它Android工程用完整示例

效果: 未解锁状态 已执行解锁指令 已执行起飞指令 飞行中 已执行降落指令 已执行返航指令 实现步骤: 1.准备PX4容器并启动:

Java项目中整合多个pdf合并为一个pdf

一、Java项目中整合多个pdf合并为一个pdf gitee笔记路径&#xff1a;https://gitee.com/happy_sad/drools一、依赖导入 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.6</version> …

AtCoder Beginner Contest 362

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;Codeforces 本文用于记录回顾总结本彩笔的解题思路便于加深理解。 比赛题目地址&#xff1a;AtCoder Beginner Contest 362 …

【保卫花果山】游戏

游戏介绍 拯救花果山是一款玩家能够进行趣味闯关的休闲类游戏。拯救花果山中玩家需要保护花果山的猴子&#xff0c;利用各种道具来防御妖魔鬼怪的入侵&#xff0c;游戏中玩家需要面对的场景非常的多样&#xff0c;要找到各种应对敌人的方法。拯救花果山里玩家可以不断的进行闯…

vue基于Cookies实现记住密码自动登录功能

vue基于Cookies实现记住密码自动登录功能 Cookies 和localStorage存储比对 实现记住密码功能时&#xff0c;使用 Cookies 和使用 localStorage 各有其优势和考虑因素&#xff0c;具体需要取决于需求和安全考量&#xff1a; 1、Cookies 的优势&#xff1a; 广泛支持&#x…

中介者模式详解:概念、优点及实例

目录 中介者模式中介者模式结构中介者模式适用场景中介者模式优缺点练手题目题目描述输入描述输出描述题解 中介者模式 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者…

windows ssh的登录,私钥权限太开放 WARNING: UNPROTECTED PRIVATE KEY FILE!

问题描述 ssh -i wang -D localhost:1080 wangsg.ks99.topBad permissions. Try removing permissions for user Permissions for xxx are too open. F:\pms\pms-gpg-key\ssh-key\wang>ssh -i wang -D localhost:1080 wangsg.ks99.top Bad permissions. Try removing perm…

查看公网IP的网络出口

文章目录 背景 背景 有时候在各种交易或其他时候&#xff0c;会被问到给我一个公网IP&#xff0c;我来帮你加白名单。 这个怎么怎么获取公网IP呢&#xff0c;在自己本机查看ipconfig或者ifconfig ip a 等命令查到的一般都是局域网的IP&#xff0c;每台机器都需要一个IP来进行对…

【文档智能 RAG】RAG新基建-RAG性能增强关键技术点及通用文档解析工具-TextIn

前言 在私有领域知识问答和企业知识管理领域&#xff0c;结合检索增强型生成模型&#xff08;Retrieval-Augmented Generation, RAG&#xff09;大模型&#xff08;Large Language Model, LLM&#xff09;已成为一种趋势。然而&#xff0c;在RAG系统的文档预处理阶段和检索阶段…

【Elasticsearch7】3-基本操作

目录 RESTful 数据格式 HTTP操作 索引操作 倒排索引 创建索引 查看所有索引 查看单个索引 删除索引 文档操作 创建文档 查看文档 ​编辑 全量修改 ​编辑局部修改 删除文档 条件删除文档 高级查询 条件查询 URL带参查询 请求体带参查询 带请求体方式的查…

STM32的ADC详解

目录 一、ADC简介 二、ADC的时钟 三、ADC特性 四、ADC功能说明 五、规则通道和注入通道 1.规则通道 2.注入通道 3.区别 六、数据寄存器 1.右对齐 2.左对齐 七、转换模式 1.单次转换模式 2.续转换模式 3.扫描模式 4.区别 八、程序实现 1.需求 2.ADC初始化 3.A…

InfiniBand网络-赋能高性能计算的卓越引擎

InfiniBand&#xff1a;赋能高性能计算网络的卓越引擎 InfiniBand作为一种先进的内网计算平台&#xff0c;已成为驱动高性能计算&#xff08;HPC&#xff09;、人工智能&#xff08;AI&#xff09;以及超大规模云基础设施演进的核心力量&#xff0c;其展现出无可比拟的性能优势…

mongodb数据导出与导入

一、先去检查mongodump mongodump --version 如果报 mongodump version: built-without-version-string 或者其他的较老的版本&#xff0c;直接去下载最新的【传送门】 【以Ubuntu18.04为例】 安装工具 假设你下载的是 .tgz 文件&#xff08;适用于 Linux 系统&#xff09;&am…

Java中SPI机制原理解析

使用SPI机制前后的代码变化 加载MySQL对JDBC的Driver接口实现 在未使用SPI机制之前&#xff0c;使用JDBC操作数据库的时候&#xff0c;一般会写如下的代码&#xff1a;// 通过这行代码手动加载MySql对Driver接口的实现类 Class.forName("com.mysql.jdbc.Driver") Dr…

鸿蒙开发error: failed to start ability

鸿蒙开发项目编译过后不能启动 项目在模拟器运行报&#xff1a; error: failed to start ability. Error while Launching ability 解决办法&#xff1a; 1&#xff0c;看了一些文章说是把module.json5配置文件中的"exported"由false改成true&#xff0c;没有解…

Python 实现股票指标计算——BIAS

BIAS (Bias Ratio) - 乖离率 1 公式 BIAS (当日收盘价 - N日平均收盘价) ➗ N日平均收盘价 ✖ 100&#xff05; N一般取6、12、24 2 数据准备 我们以科创50指数 000688 为例&#xff0c;指数开始日期为2019-12-31&#xff0c;数据格式如下&#xff1a; 3 计算过程 def c…

Java 中的异常

异常&#xff1a;就是出现的问题。 在Java中异常被当成对象进行处理&#xff0c;所有的异常类都继承于Throwable类&#xff0c;如果Java提供的异常类并不能满足需求&#xff0c;用户还可以自己定义一个异常类。 下面是异常体系结构&#xff1a; Throwable又分成了Error和Exce…