【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

相关推荐

  1. React前端React 代码展示excel文件

    2024-02-03 13:14:01       47 阅读
  2. ReactReactdocx文件

    2024-02-03 13:14:01       48 阅读
  3. react native 图片

    2024-02-03 13:14:01       32 阅读
  4. React前端解析excel文件,获取excel文件的数据

    2024-02-03 13:14:01       60 阅读
  5. excel文件: luckyexcel+luckysheet

    2024-02-03 13:14:01       130 阅读
  6. 前端 文件方法汇总

    2024-02-03 13:14:01       64 阅读
  7. vue项目实现doc/excel/pdf/txt/图片等文件

    2024-02-03 13:14:01       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 13:14:01       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 13:14:01       97 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 13:14:01       78 阅读
  4. Python语言-面向对象

    2024-02-03 13:14:01       88 阅读

热门阅读

  1. 本地部署 SalesGPT

    2024-02-03 13:14:01       41 阅读
  2. 大规模语言模型LLM介绍

    2024-02-03 13:14:01       44 阅读
  3. 假期作业 2.2

    2024-02-03 13:14:01       56 阅读
  4. clickhouse批量入库异常日志

    2024-02-03 13:14:01       41 阅读
  5. 前端工程化之:webpack1-11(其他配置)

    2024-02-03 13:14:01       56 阅读
  6. XML要点总结

    2024-02-03 13:14:01       41 阅读
  7. uniapp本地存储的几种方式localStorage

    2024-02-03 13:14:01       59 阅读