当前位置: 首页 > news >正文

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

概述

本文基于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.datawindow.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 iddata: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.fileUrlwindow.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, //新增sheetmenu: false, //sheet管理菜单sheet: true, //sheet页显示},forceCalculation: true, //强制计算公式})})

相关文章
  • Vue中使用mind-map实现在线思维导图
  • Vue中实现在线画流程图实现
  • 基于语雀编辑器的在线文档编辑与查看
http://www.lryc.cn/news/403424.html

相关文章:

  • 【学习笔记】无人机系统(UAS)的连接、识别和跟踪(一)-3GPP TS 23.256 技术规范概述
  • sqlalchemy_dm
  • 基于springboot+vue+uniapp的驾校预约平台小程序
  • echarts实现3d柱状效果
  • Flask校验
  • web前端 Vue 框架面试120题(一)
  • UniApp__微信小程序项目实战 实现长列表分页,通过 onReachBottom 方法上划分次加载数据
  • 数据结构(功能受限的表-栈队列)
  • 高数知识补充----矩阵、行列式、数学符号
  • 《Techporters架构搭建》-Day01 第一个RESTful API接口
  • 【C++ —— AVL树】
  • 跨平台webSocket模块设计技术解决方案
  • Drools规则引擎
  • vue学习day11-路由、路由模块的封装、声明式导航-路由的介绍、VueRouter、router-link、自定义高亮类名
  • 智慧校园学期基础数据管理
  • ISP代理和双ISP代理:区别和优势
  • 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【22】【RabbitMQ】
  • 概率论原理精解【4】
  • Linux云计算 |【第一阶段】ENGINEER-DAY3
  • springboot 实体类加注解校验入参数据
  • 关于 Qt输入法在arm特定的某些weston下出现调用崩溃 的解决方法
  • Android Studio关于Gradle及JDK问题解决
  • Leetcode 205. 同构字符串
  • 多口适配器,给您的生活增添便利
  • 探索现代Web开发:WebKit的剪贴板API革新
  • 【电路笔记】-放大器的频率响应
  • Artix7系列FPGA实现SDI视频编解码,基于GTP高速接口,提供3套工程源码和技术支持
  • NET 语言识别,语音控制操作、语音播报
  • Unity 调试死循环程序
  • 视频监控平台LntonCVS视频融合共享平台智慧安防视频监控汇聚应用方案