【React】前端React 代码中预览展示excel文件
郭_昊 2024-07-13 08:33:01 阅读 58
封装了ExcelView来展示excel文件,支持显示loading
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">code>
<div ref={excelContainerRef} className="h-full" />code>
{isLoading && (
<div className="absolute inset-0 flex items-center justify-center bg-white bg-opacity-75">code>
<Spin size="large" />code>
</div>
)}
</div>
)
}
export default ExcelView
上一篇: 记录---IOS审核打包被驳回—Guideline 4.3
下一篇: 正确解决org.springframework.web.client.HttpClientErrorException: 400异常的有效解决方法
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。