当前位置:首页 » 《关于电脑》 » 正文

纯前端实现在线预览excel文件(插件: LuckyExcel、Luckysheet)

21 人参与  2024年11月12日 19:21  分类 : 《关于电脑》  评论

点击全文阅读


概述
在实际开发中,遇到需要在线预览各种文件的需求,最近遇到在线预览excel文件的需求,在此记录一下!本文主要功能实现,用于插件 LuckyExcel ,Luckysheet!废话不多说,上代码!

一:安装LuckyExcel、Luckysheet。

安装LuckyExcel:

npm i LuckyExcel

Luckysheet不存在npm包,需要通过script标签去通过远程url引入:

引入luckysheet 有两种方式:
第一种CDN:

注意,https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/luckysheet.umd.js这个路径意思是会拉取到最新的luckysheet代码,但是如果Luckysheet刚刚发布,jsdelivr网站可能还没来得及从npm上同步过去,故而使用这个路径还是会拉到上一个版本,我们推荐您直接指定最新版本。

想要指定Luckysheet版本,请在所有的CDN依赖文件后面加上版本号,如:https://cdn.jsdelivr.net/npm/luckysheet@2.1.12/dist/luckysheet.umd.js。

<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/css/pluginsCss.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/plugins.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/css/luckysheet.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/assets/iconfont/iconfont.css' /><script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/js/plugin.js"></script><script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/luckysheet.umd.js"></script>

第二种本地静态文件引入,npm run build后dist文件夹下的所有文件复制到项目目录,然后通过相对路径引入:

<link rel='stylesheet' href='./plugins/css/pluginsCss.css' /><link rel='stylesheet' href='./plugins/plugins.css' /><link rel='stylesheet' href='./css/luckysheet.css' /><link rel='stylesheet' href='./assets/iconfont/iconfont.css' /><script src="./plugins/js/plugin.js"></script><script src="./luckysheet.umd.js"></script>

二:在文件中引入

import LuckyExcel from 'luckyexcel';

Luckysheet库因为是script引入的,可以通过window.Luckysheet来使用,为避免ts报错,需要定义全局变量。

declare global {    interface Window {        luckysheet: any;    };};

指定一个表格容器

<div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;"></div>

创建表格

<script>//配置项var options = {    container: 'luckysheet' //luckysheet为容器id}luckysheet.create(options)</script>

3. 在线预览excel文件

在日常的业务中,预览的excel有2种场景:

在线的excel url链接通过后端流式接口请求的excel数据

所以我们通过接口将response转为buffer格式,来兼容2种形式场景:

fetch("example.xlsx").then(res => {            return res.arrayBuffer();        }).then(buffer => {            // 转为blob格式,以备后面下载使用            const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });            //可以将blob对象保存起来 需要在外层定义好`downloadFile`变量            downloadFile = blob;                        LuckyExcel.transformExcelToLucky(buffer, function (exportJson, luckysheetfile) {                exportJson.sheets[0].zoomRatio = 1;                console.log("exportJson", exportJson);                console.log("window.luckysheet", window.luckysheet);                if (window.luckysheet && window.luckysheet.create) {                    window.luckysheet?.create({                        container: "excel", //luckysheet is the container id                        lang: 'zh',                        showtoolbar: false,//是否显示工具栏                        showinfobar: false,//是否显示顶部信息栏                        showsheetbar: false,//是否显示底部sheet页按钮                        allowCopy: false,//是否允许拷贝                        allowEdit: false,//是否允许编辑                        // showstatisticBar: false,//是否显示底部计数栏                        sheetFormulaBar: false,//是否显示公示栏                        enableAddRow: false,//是否允许添加行                        enableAddBackTop: false,//是否允需回到顶部                        // devicePixelRatio: 10, //设置比例                        data: exportJson.sheets,                        // title: exportJson.info.name,                        // userInfo: exportJson.info.name.creator,                        hook: {                            workbookCreateAfter: () => {                                console.log("workbookCreateAfter------------");                            }                        }                    });                }            })        })

luckysheet中并没有excel文件加载完毕的回调,但是可以通过hook中的workbookCreateAfter来监听文件加载完成。

luckysheet的页面配置项,可以通过官网文档来进行自由配置。 luckysheet配置项

下载文件功能函数:

// 下载文件const handleDownloadFile = () => {    if (downloadFile) {        const url = window.URL.createObjectURL(downloadFile);        const a = document.createElement('a');        a.style.display = 'none';        a.href = url;        a.download = '高效机房设计计算报告.xlsx';        document.body.appendChild(a);        a.click();        window.URL.revokeObjectURL(url);        document.body.removeChild(a);    }};

最终效果如下:
在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/185283.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1