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



    {isLoading && (

    <Spin size="large" />

    )}

    )
    }

    export default ExcelView

相关推荐
咕噜咕噜啦啦1 小时前
Vue3响应式开发
前端·javascript·vue.js
huangql5202 小时前
布局单位与设计稿换算:从「看清」到「量准」
前端
牛奶3 小时前
你不知道的JS(下):深入编程
前端·javascript·电子书
牛奶3 小时前
你不知道的JS(下):深入JS(下)
前端·javascript·电子书
牛奶3 小时前
你不知道的JS(下):总结与未来
前端·javascript·电子书
牛奶3 小时前
你不知道的JS(下):深入JS(上)
前端·javascript·电子书
CappuccinoRose4 小时前
HTML语法学习文档(五)
前端·html·html5·表单
硅基动力AI5 小时前
如何判断一个关键词值不值得做?
java·前端·数据库
yq1982043011566 小时前
使用Django构建视频解析网站 从Naver视频下载器看Web开发全流程
前端·django·音视频
funnycoffee1236 小时前
EXCEL利用REPT显示比例
excel·rept