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

【React】前端React 代码中预览展示excel文件

封装了ExcelView来展示excel文件,支持显示loading

1.安装依赖

npm i @js-preview/excel
  1. 源码
import React, { useEffect, useRef, useState } from 'react'
import jsPreviewExcel, { JsExcelPreview } from '@js-preview/excel'
import '@js-preview/excel/lib/index.css'
import { Spin } from 'antd'export interface Props {fileInfo: string
}const ExcelView = (props: Props) => {const { fileInfo } = propsconst excelContainerRef = useRef<HTMLDivElement | null>(null)const excelPreviewerRef = useRef<JsExcelPreview | null>(null) // 保存 myExcelPreviewer 的引用const [isLoading, setIsLoading] = useState<boolean>(true)useEffect(() => {const containerElement = excelContainerRef.currentif (containerElement && !excelPreviewerRef.current) {// 初始化 myExcelPreviewer,并保存引用const myExcelPreviewer = jsPreviewExcel.init(containerElement)excelPreviewerRef.current = myExcelPreviewersetIsLoading(true) // 开始加载时设置 loading 状态myExcelPreviewer.preview(fileInfo).then(() => {setIsLoading(false) // 预览完成后取消 loading 状态console.info('预览完成')}).catch((e) => {setIsLoading(false) // 预览失败后取消 loading 状态console.info('预览失败', e)})}}, [fileInfo])return (<div className="relative h-full"><div ref={excelContainerRef} className="h-full" />{isLoading && (<div className="absolute inset-0 flex items-center justify-center bg-white bg-opacity-75"><Spin size="large" /></div>)}</div>)
}export default ExcelView

相关文章:

  • FreeRTOS任务相关的API函数
  • 爬虫(二)使用urllib爬取百度贴吧的数据
  • IDEA中的Run Dashboard
  • .net core 6 集成 elasticsearch 并 使用分词器
  • 学习方法分享
  • 关于C++的system()函数安全隐患问题
  • 虹科技术丨一文详解IO-Link Wireless技术如何影响工业无线自动化
  • 定义HarmonyOS IDL接口
  • 【MybatisPlus篇】查询条件设置(范围匹配 | 模糊匹配 | 空判定 | 包含性判定 | 分组 | 排序)
  • stack_queue:三个关键注意事项解析
  • Mac M1使用PD虚拟机运行win10弹出“内部版本已过期立即安装新的windows内部版本”
  • 手机云控制发电机组 有网络随时随地操控监控运行
  • 【劳德巴赫 Trace32 高阶系列 3 -- trace32 svf 文件操作命令】
  • 场效应管学习笔记
  • 基于SpringBoot Vue学生成绩管理系统
  • [LeetCode] Wiggle Sort
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Android框架之Volley
  • bootstrap创建登录注册页面
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • HashMap ConcurrentHashMap
  • Java Agent 学习笔记
  • LeetCode18.四数之和 JavaScript
  • LeetCode算法系列_0891_子序列宽度之和
  • mongodb--安装和初步使用教程
  • webpack4 一点通
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 区块链技术特点之去中心化特性
  • 学习ES6 变量的解构赋值
  • $GOPATH/go.mod exists but should not goland
  • (c语言)strcpy函数用法
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm码农论坛 毕业设计 231126
  • (六)vue-router+UI组件库
  • (五)IO流之ByteArrayInput/OutputStream
  • (新)网络工程师考点串讲与真题详解
  • .NET 8.0 发布到 IIS
  • .net core 6 集成和使用 mongodb
  • @RestController注解的使用
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [1204 寻找子串位置] 解题报告
  • [BUG]vscode插件live server无法自动打开浏览器
  • [codeforces]Levko and Permutation
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • [LeetCode] 178. 分数排名
  • [LeetCode]—Anagrams 回文构词法
  • [Linux] 一文理解HTTPS协议:什么是HTTPS协议、HTTPS协议如何加密数据、什么是CA证书(数字证书)...
  • [MySQL]日期和时间函数
  • [Oh My C++ Diary]一元作用域运算符::的使用
  • [PHP] 面向对象