vue2.0 luckyexcel实现后端返回文件流在前端页面显示

1.引用

npm install luckyexcel
// 本地引入资源包
<link rel='stylesheet' href='<%= BASE_URL %>cdn-jsdelivr/pluginsCss.css' />
<link rel='stylesheet' href='<%= BASE_URL %>cdn-jsdelivr/plugins.css' />
<link rel='stylesheet' href='<%= BASE_URL %>cdn-jsdelivr/luckysheet.css' />
<link rel='stylesheet' href='<%= BASE_URL %>cdn-jsdelivr//iconfont.css' />
<script src="<%= BASE_URL %>cdn-jsdelivr/plugin.js"></script>
<script src="<%= BASE_URL %>cdn-jsdelivr/luckysheet.umd.js"></script>

2.运用

html骨架中定义id为luckysheet1的元素

<div id="luckysheet1" class="luckysheet" style="width:96%;height:99%;margin:0px;padding:0px;"></div>

script中引入以及接收到数据流的后续操作

import LuckyExcel from 'luckyexcel'
// 拿到数据流的处理方法
// 接口请求
async searchClick(){
   let res = await blobExcel(this.params);
   const objectURL = window.URL.createObjectURL(new Blob([res],{type: 'application/zip'})); 
   this.showTable=true;
   this.uploadExcel(objectURL)
},
// 通过luckyexcel进行数据处理并显示
uploadExcel (url) {
  	LuckyExcel.transformExcelToLuckyByUrl(url, 'test3.xlsx', function (exportJson, luckysheetfile) {
	    if (exportJson.sheets == null || exportJson.sheets.length == 0) {
	        alert('Failed to read the content of the excel file, currently does not support xls files!')
	        return
	    }
	    window.luckysheet.destroy()
	    // 配置项
	    window.luckysheet.create({
	      container: 'luckysheet1',
	      data: exportJson.sheets,
	      title: exportJson.info.name,
	      userInfo: exportJson.info.name.creator,
	      lang: 'zh',
	      showinfobar: false,
	      showtoolbar: false,
	      allowEdit: false,
	      allowCopy: false,
	      editMode: true
	    })
  })
},

3.效果展示

在这里插入图片描述

4.在显示过程中遇到的问题

1. luckyexcel 容器一定要给宽高,这样渲染才能看出又没有成功
2. 通过axios进行接口请求文件数据流,数据流会被过滤到catch中,所以在catch中要进行resolve()数据返回
3. 如果在显示过程中报npm下载的资源包内部错误,应该是项目中有些挂载在Array的方法与资源包冲突了
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值