react中预览excel表格

查了很多资料,很多插件,有很多也用不了,最后试了xlsx这个插件,可以使用。

话不多少了,直接放代码吧:

1.代码实现

fetch(API).then((res: any) => {res?.blob().then((r: any) => {const reader = new FileReader();//通过readAsArrayBuffer将blob转换为ArrayBuffer对reader.readAsArrayBuffer(r) // 这里的res.data是blob文件流reader.onload = (event: any) => {// 读取ArrayBuffer数据变成Uint8Arraylet data = new Uint8Array(event.target.result);// 这里的data里面的类型和后面的type类型要对应let workbook = XLSX.read(data, { type: "array" });set_work_book(workbook);let sheetNames = workbook.SheetNames; // 工作表名称set_sheet_names(sheetNames);set_select_sheet(sheetNames[0]);let worksheet = workbook.Sheets[sheetNames[0]];// var excelData = XLSX.utils.sheet_to_json(worksheet); //JSONlet html = XLSX.utils.sheet_to_html(worksheet);document.getElementsByClassName('xlsxClass')[0].innerHTML = html};})})

简单说一下,我的excel文件是后台返回的,拿到res之后,先转为blob格式,然后经过一系列的转义,最终拿到Unit8Array格式数据,通过插件XLSX的read方法,读出excel的数据,worksheet就是excel文件中具体每一行的数据:

 workbook.Sheets[sheetNames[0]]是用来访问工作簿中名为sheetNames[0](指的第一个)的工作表,XLSX.utils.sheet_to_html(worksheet)这个函数则是将工作表(worksheet)转换成HTML表格的形式,生成HTML代码,然后使用innerHTML将数据写到页面上即可。

2,优化

这种方法预览的数据没有边框,我们自己写一下样式即可:

.xlsxClass {table {border: 1px solid #c9c9c9c9;td {border-left: 1px solid #c9c9c9c9;border-bottom: 1px solid #c9c9c9c9;padding: 10px;min-width: 120px;}}}

 然后还有一个问题,如果是多个表的话,需要将workbook存下来,首先把拿到的工作簿列表进行页面显示,然后点击的时候切换时再次执行:获取当前点击的工作簿以及转为html并显示的操作,替换掉名字就行了。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChromeDriver驱动最新版下载

下载地址ChromeDriver - WebDriver for Chrome - Downloads selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 113 Current browser version is 117.0.5938.150 with binar…

【MySQL】Linux 中 MySQL 环境的安装与卸载

文章目录 Linux 中 MySQL 环境的卸载Linux 中 MySQL 环境的安装 Linux 中 MySQL 环境的卸载 在安装 MySQL 前,我们需要先将系统中以前的环境给卸载掉。 1、查看以前系统中安装的 MySQL rpm -qa | grep mysql2、卸载这些 MySQL rpm -qa | grep mysql | args yum …

数据结构——哈希的应用之位图,布隆过滤器与哈希切割

文章目录 前言1. 位图1.1 位图的概念1. 2 模拟实现stl位图位图的应用 2.布隆过滤器2.1 布隆过滤器的概念 布隆过滤器的查找布隆过滤器的删除问题布隆过滤器优点布隆过滤器缺陷 哈希切割 前言 本篇博客主要讲述的是应用哈希的一些数据结构_位图和布隆过滤器,讲解了这…

手机待办事项app哪个好?

手机是日常很多人随身携带的设备,手机除了拥有通讯功能外,还能帮助大家高效管理日常工作,借助手机上的待办事项提醒APP可以快速地帮助大家规划日常事务,提高工作的效率。 过去,我也曾经在寻找一款能够将工作任务清晰罗…

基于Java的4S店汽车商城系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

rsync 远程同步实现快速、安全、高效的异地备份

目录 1 rsync 远程同步 1.1 rsync是什么? 1.2 rsync同步方式 1.3 rsync的特性 1.4 rsync的应用场景 1.5 rsync与cp、scp对比 1.6 rsync同步源 2 配置rsync源服务器 2.1 建立/etc/rsyncd.conf 配置文件 3 发起端 4 发起端配置 rsyncinotify 4.1 修改rsync…

基于SpringBoot的网上摄影工作室

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 作品分类管理 轮播图管理 摄影作品管理 摄影作品收藏 摄影圈 摄影作品发布 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统…

基于卷积神经网络的图像识别-案例实施1

案例描述 学习如何搭建CNN卷积神经网络,训练cifar-10数据,识别图片中的内容。 案例分析 cifar-10是由Hinton的学生Alex Krizhevsky和Ilya Sutskever整理的一个用于识别普适物体的小型数据集。一共包含 10个类别的 RGB 彩色图 片:飞机&…

GPT系列论文解读:GPT-3

GPT系列 GPT(Generative Pre-trained Transformer)是一系列基于Transformer架构的预训练语言模型,由OpenAI开发。以下是GPT系列的主要模型: GPT:GPT-1是于2018年发布的第一个版本,它使用了12个Transformer…

最全解决docker配置kibana报错 Kibana server is not ready yet

问题复现: 在浏览器输入http://192.168.101.65:5601/ 访问kibana报错 Kibana server is not ready yet 问题报错: 首先查看kibana的日志 docker logs kibana 看到报错如下: {"type":"log","timestamp":&q…

java Spring Boot 手动启动热部署

好 接下来 我们讲一个对开发非常重要的东西 热部署 因为 我们在开发过程中总会希望快点看到效果 或者 你的企业项目一般很大很复杂,重启是一件非常麻烦的事 或者你在和前端同事联调,有一点小问题 你改完就要重启 前端还得等你,非常不友好 那…

[网鼎杯 2020 白虎组]PicDown python反弹shell proc/self目录的信息

[网鼎杯 2020 白虎组]PicDown - 知乎 这里确实完全不会 第一次遇到一个只有文件读取思路的题目 这里也确实说明还是要学学一些其他的东西了 首先打开环境 只存在一个框框 我们通过 目录扫描 抓包 注入 发现没有用 我们测试能不能任意文件读取 ?url../../../../etc/passwd …

10款录屏软分析与选择使用,只看这篇文章就轻松搞定所有,高清4K无水印录屏,博主UP主轻松选择

录屏软件整理 如下为录屏软件,通过思维导图展示分析介绍: https://www.drawon.cn/template/details/6522bd5e0dad9029a0b528e1 如下为整理的录屏软件列表 名称产地价格支持的平台下载地址说明OBS国外免费开源windows/linux/machttps://obsproject.co…

经典算法-----农夫过河问题(深度优先搜索)

目录 前言 农夫过河问题 1.问题描述 2.解决思路 位置编码 获取位置 判断是否安全 深度优先遍历(核心算法) 3.完整代码 前言 今天我们来解决一个有意思的问题,也就是农夫过河问题,可能这个问题我们小时候上学就听说过类似的…

Flink---10、处理函数(基本处理函数、按键分区处理函数、窗口处理函数、应用案例TopN、侧输出流)

星光下的赶路人star的个人主页 我的敌手就是我自己,我要他美好到能使我满意的程度 文章目录 1、处理函数1.1 基本处理函数(ProcessFunction)1.1.1 处理函数的功能和使用1.1.2 ProcessFunction解析1.1.3 处理函数的分类 1.2 按键分区处理函数&…

你的librosa和scikit-learn打架了吗?

被这个问题困扰好久!!!!!!!!!!!!!! 我的原来版本librosa0.7.1 和 scikit-learn1.3.1 一直拆了按,按…

【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 2 Oct 2023 Totally 42 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚PONG, Probabilistic Object Normals for Grasping 用于抓取的概率目标归一化,根据目标表面法向量获取的不确定…

抄写Linux源码(Day17:你的键盘是什么时候生效的?)

回忆我们需要做的事情: 为了支持 shell 程序的执行,我们需要提供: 1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的,所以需要这两个东…

网络安全--安全认证、IPSEC技术

目录 1. 什么是数据认证,有什么作用,有哪些实现的技术手段? 2. 什么是身份认证,有什么作用,有哪些实现的技术手段? 3. 什么是VPN技术? 4. VPN技术有哪些分类? 5. IPSEC技术能够…

JavaScript-mooc(纯分享)

第一步下载软件 mooc_v1.3.2_windows_amd64.zip - 蓝奏云 解压后打开有这么多文件 用记事本的打开方式打开config的文件 第一个尖头改成你学校对应慕课英华网址 第二个箭头是你的账号 第三个箭头是你的密码 改好后点击文件保存 最后一步点击运行 {"global": {&qu…