前端使用Luckysheet把返回的base64或二进制文件流格式,实现xlsx文件预览
xlsx文件预览
- Luckysheet是什么?
- 代码实现xlsx文件预览
- 引入luckysheet的相关依赖
- 安装luckyexcel
- 指定一个表格容器
- 实现逻辑
Luckysheet是什么?
Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。
Luckysheet 已不再维护,推荐使用 Univer 替代;虽然不在维护,但是不影响他功能以及特性的强大,还是可以正常使用;
本来我是想尝试用Univer,但是我的项目是一个引入vue2的H5项目,所以只能用Luckysheet 来实现;
如果想探索和了解更多点击官方中文文档或者gitHub仓库地址查询和学习;
代码实现xlsx文件预览
我项目里新建的一个xlsxPreview.html,实现,点击文件后,调转到该页面实现预览;
引入luckysheet的相关依赖
我这里在xlsxPreview.html中直接是CDN引入,你也可以安装后再build打包后把dist文件夹下的所有文件复制到项目目录,然后通过相对路径引入,这个官方文档有介绍,这里就不写了,我们直接用CDN引入,
//我这里引入vue,是为了说明在下面H5中使用了vue的写法,<script src='../../js/vue.js'></script>//你只需要引入下面的即可<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>
安装luckyexcel
npm install luckyexcel --save
把node_modules中安装的luckyexcel 复制出来到H5目录下,在xlsxPreview.html通过script引入;
<script src="../../luckyexcel/dist/luckyexcel.umd.js"></script>
指定一个表格容器
<div style="width: 100%;" id="xlsxPreview"><div id="luckysheet" style="margin:0px;padding:5px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;" ></div></div>
实现逻辑
mounted() {const fileId = getParam("fileId")this.getFile(fileId)},methods:{getFile(fileId){$.ajax({url:"/api-file/file/getFileByte",type: 'post',responseType:'blob',data: {fileId: fileId,},beforeSend: function (request) {request.setRequestHeader("Authorization", "Bearer " + JSON.parse(window.sessionStorage.getItem('store') || '{}').token);},success:(res) => {// 将Base64字符串转换为二进制字符串const path = res.dataconst raw = window.atob(path);const rawLength = raw.length;const uInt8Array = new Uint8Array(rawLength);for (let i = 0; i < rawLength; ++i) {uInt8Array[i] = raw.charCodeAt(i);}const xlsxBlob = new Blob([uInt8Array],{type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})const file = new File([xlsxBlob], 'XXX.xlsx', { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });var files = [];files.push(file);this.uploadExcel(files)},error:(err) => {alert('文件加载失败,请稍后重试!')}})},uploadExcel(files) {if (files == null || files.length == 0) return alert('没有文件等待导入');let name = files[0].name;let suffixArr = name.split('.'),suffix = suffixArr[suffixArr.length - 1];if (suffix != 'xlsx') return alert('目前只支持导入xlsx文件');LuckyExcel.transformExcelToLucky(files[0], function (exportJson, luckysheetfile) {if (exportJson.sheets == null || exportJson.sheets.length == 0) return alert('读取excel文件内容失败, 目前不支持XLS文件!');luckysheet.destroy();luckysheet.create({data: exportJson.sheets,title: exportJson.info.name,userInfo: exportJson.info.name.creator,container: 'luckysheet', // 设定DOM容器的idshowtoolbar: false, // 是否显示工具栏showinfobar: false, // 是否显示顶部信息栏showstatisticBar: false, // 是否显示底部计数栏showsheetbar:true,sheetBottomConfig: true, // sheet页下方的添加行按钮和回到顶部按钮配置allowEdit: false, // 是否允许前台编辑enableAddRow: false, // 是否允许增加行enableAddCol: false, // 是否允许增加列sheetFormulaBar: false, // 是否显示公式栏enableAddBackTop: false, // 返回头部按钮showsheetbar: false, // 是否显示底部sheet页按钮enableAddRow: false,//允许添加行// 自定义配置底部sheet页按钮showsheetbarConfig: {add: false,menu: true,},});});},}
相关文章:
前端使用Luckysheet把返回的base64或二进制文件流格式,实现xlsx文件预览
xlsx文件预览 Luckysheet是什么?代码实现xlsx文件预览引入luckysheet的相关依赖安装luckyexcel指定一个表格容器实现逻辑 Luckysheet是什么? Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 Luckys…...

腾讯混元宣布大语言模型和3D模型正式开源
腾讯混元大模型正在加快开源步伐。 11月5日,腾讯混元宣布最新的MoE模型“混元Large“以及混元3D生成大模型“ Hunyuan3D-1.0”正式开源,支持企业及开发者精调、部署等不同场景的使用需求,可在HuggingFace、Github等技术社区直接下载ÿ…...

提示工程指南 笔记
诸神缄默不语-个人CSDN博文目录 课程网站:提示工程指南 | Prompt Engineering Guide 原版是英文:https://www.promptingguide.ai/ 特别基础的内容我就不写了,只写一些值得记录的内容。 文章目录 1. 常用术语(LLM特供版ÿ…...

WordPress站点网站名称、logo设置
WordPress网站名称设置 后台打开查看站点自定义设置 点击网站名称修改 上传logo和站点图标...
本地缓存与 Redis:为什么我们仍然需要本地缓存?
文章目录 本地缓存与 Redis:为何仍需本地缓存?为什么需要本地缓存?多级缓存架构多级缓存的实现 本地缓存的实现方式使用 cachetools 实现 LRUCache使用 diskcache 实现持久化缓存 缓存装饰器实现进一步优化:缓存失效与更新 小结 好…...

要在微信小程序中让一个 `view` 元素内部的文字水平垂直居中,可以使用 Flexbox 布局
文章目录 主要特点:基本用法:常用属性: 要在微信小程序中让一个 view 元素内部的文字水平垂直居中,可以使用 Flexbox 布局。以下是如何设置样式的示例: .scan-button {display: flex; /* 启用 Flexbox 布局 */justify…...
图像超分辨率、DPSRGAN
图像超分辨率(Image Super-Resolution, ISR)是一种通过增加图像的分辨率来提高其细节和清晰度的技术。这项技术在多个领域都有广泛的应用,比如视频监控、医学诊断、遥感应用等。根据搜索结果,图像超分辨率算法主要可以分为以下几类…...

124.WEB渗透测试-信息收集-ARL(15)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:123.WEB渗透测试-信息收集-ARL(14) 点击fofa任务下发(…...

@Async注解提升Spring Boot项目中API接口并发能力
文章目录 同步调用异步调用1: 启用异步支持2: 修改 Task 类异步回调基本概念使用 Future<String>使用 CompletableFuture<String>Future<String> 和 CompletableFuture<String>区别1. 基本概念2. 主要区别同步调用 同步调用是最直接的调用方式,调用方…...
SpringBoot集成Flink-CDC
Flink CDC CDC相关介绍 CDC是什么? CDC是Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到MQ以…...
SQL报错注入检测方法与攻击方法
报错注入 即是注入检测方法,又是注入读取数据的方法 攻击者在判断一个参数是否存在SQL注入漏洞时,会拼接单引号,反斜杠字符,如果显示语法报错,证明这个位置具有SQL注入漏洞,也可以通过整数溢出来判断&…...

Linux内核编程(十九)SPI子系统的应用与驱动编写
本文目录 一、 SPI驱动框架图二、编写SPI驱动device框架三、编写SPI驱动driver框架四、实验一编写mcp2515驱动1. 注册字符设备或杂项设备框架2. SPI写数据3. SPI读寄存器数据 4. MCP2515相关配置 对于SPI基础知识这里不做过多讲解,详情查看:SPI基础知识实…...
MVC 文件夹结构详解
MVC 文件夹结构详解 MVC(Model-View-Controller)是一种广泛应用于软件开发中的设计模式,它通过将应用程序分为三个核心组件——模型(Model)、视图(View)和控制器(Controller)——来组织代码,提高代码的可维护性和可扩展性。在MVC模式中,每个组件都有其特定的职责,…...
远程操作Linux服务器 _Xshell、Xftp以及Linux常见操作命令
工具推荐 Xshell和Xftp是两款由NetSarang公司开发的、广受欢迎的软件工具,它们分别专注于终端模拟和文件传输,为用户提供了便捷的操作和强大的功能。以下是对这两款软件的详细解析: 一、Xshell 定义与功能 Xshell是一个强大的安全终端模拟软…...

单链表的实现(数据结构)
一. 单链表的实现 我们在上一篇中简单的认识了链表的组成和结构,并打印出链表,那么今天就来具体实现一下单链表对于数据增加、删减、插入等。 接下来就是我们在链表中对于数据的增、删、插的实现,对于我们的链表来说在任何地方增加数据都需…...
印刷质量检测笔记
一、印刷质量检测的背景与挑战 印刷品的质量检测,特别是针对高精度要求的印刷产品,如包装材料、标签、书籍封面等,一直是制造业中的一个关键环节。印刷品可能存在的质量问题多种多样,包括但不限于颜色偏差、文字模糊、漏印、多印…...

16、论文阅读:Mamba YOLO:用于目标检测的基于 SSM 的 YOLO
Mamba YOLO: SSMs-Based YOLO For Object Detection 总结前言感受野为什么Transformer 的结构被引入,显著扩展了模型的感受野?状态空间模型SSM 介绍相关工作实时目标检测端到端目标检测器视觉状态空间模型 方法预处理整体架构ODSS BlockLocalSpatial Blo…...

python项目实战---使用图形化界面下载音乐
音乐下载 设计思路: 设计界面编写爬虫代码绑定爬虫打包exe文件 这个是最终的设计成果,所有的下载歌曲都在“下载mp3”文件夹里面 完整代码 逻辑代码 import os.path import reimport requests from PyQt5.QtWidgets import QApplication,QWidget,QM…...

无人机干扰与抗干扰,无人机与反制设备的矛与盾
无人机干扰与抗干扰,以及无人机与反制设备之间的关系,可以形象地比喻为矛与盾的较量。以下是对这两方面的详细探讨: 一、无人机干扰与抗干扰 1. 无人机干扰技术 无人机干扰技术是指通过各种手段对无人机系统进行干扰,使其失去正…...

JAVA基础:单元测试;注解;枚举;网络编程 (学习笔记)
单元测试 操作步骤: a.导包import org.junit; b.三个注解 Test Before After c.点击Test 运行就可以了 用在不需要控制台输入的情境下:javaweb,框架项目,微服务项目 供开发人员自己做测试。 package com.page…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...