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

【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 } = props
  const excelContainerRef = useRef<HTMLDivElement | null>(null)
  const excelPreviewerRef = useRef<JsExcelPreview | null>(null) // 保存 myExcelPreviewer 的引用
  const [isLoading, setIsLoading] = useState<boolean>(true)

  useEffect(() => {
    const containerElement = excelContainerRef.current

    if (containerElement && !excelPreviewerRef.current) {
      // 初始化 myExcelPreviewer,并保存引用
      const myExcelPreviewer = jsPreviewExcel.init(containerElement)
      excelPreviewerRef.current = myExcelPreviewer

      setIsLoading(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


http://www.kler.cn/a/229850.html

相关文章:

  • 图像处理|腐蚀操作
  • FFmpeg Muxer HLS
  • 了解模2除法:原理与应用
  • <rust>在rust中,实现32位浮点数与16进制之间的转换
  • AI的主流数据库介绍及其功能对比
  • 【云商城】高性能门户网构建
  • RabbitMQ:分布式系统中的高效消息队列
  • 19:Web开发模式与MVC设计模式-Java Web
  • 第三百一十一回
  • 前端工程化之:webpack1-11(其他配置)
  • Bytebase 签约 Vianova,助力欧洲城市交通智能平台中 Snowflake 和 PG 的变更自动化及版本控制
  • 2.6 假期作业
  • 3D室内虚拟灭火体验为预防火灾提供全新方案
  • 你为什么不喜欢关电脑?我只是想第二天能够快速进入工作状态
  • Web课程学习笔记--CSS盒模型
  • 国考省考行测:平行结构体
  • C# Avalonia 11.0.6 绘图
  • C++ 11新特性之tuple
  • 期权定价模型系列【14】期权复制—Delta动态复制误差计算
  • 动态更改 Spring 定时任务 Cron 表达式的优雅方案
  • JS-本地文件上传
  • IDEA中的Run Dashboard
  • C语言---------对操作符的进一步认识
  • 第三篇:SQL数据模型、通用语法和语法分类
  • 02.05
  • 故障诊断 | 一文解决,CNN-SVM卷积神经网络-支持向量机组合模型的故障诊断(Matlab)