Vue实现导出excel表格功能

  

  

最近使用vue在做一个后台系统,技术栈vue + iView、在页面中生成表格后,iView可以实现表格的导出,不过只能导出csv格式的,并不适合项目需求。

  

如果想要导出Excel

  
      <李>在src目录下创建一个文件(供应商)进入Blob。js和Export2Excel.js李   <李> npm安装- s点击用来生成文件的网络应用程序李   <李> npm安装- s xlsx电子表格格式的解析器李   <李> npm安装- d script-loader将js挂在在全局下
      李   
  

<强>表结构

  

渲染页面中的表结构是由列列和tableData行,来渲染的列为表头数据tableData为表实体内容
  

        columns1:(   {   标题:“序”号,   关键:“serNum”   },   {   标题:“选择”,   关键:“选择”,   对齐:“中心”,   呈现:(h, params)=比;{   如果(params.row。地位!==' 1 ',,params.row。地位!==' 2 '){   返回h (" div " (   h(“复选框”,{   道具:{   类型:“选择”   },>   别名:{   “src”:路径。解决(__dirname“. ./src”),   }      

在当前页面中引入依赖

        要求(“script-loader !点击”)//转二进制用   要求(script-loader ! src/供应商/Blob)//xlsx核心   要求(script-loader ! xlsx/dist/xlsx.core.min)      

当我们要导出表格执行@click事件调用handleDownload函数

        handleDownload () {   这一点。downloadLoading=true   要求。确保([],()=比;{   const {export_json_to_excel}=要求(src/供应商/Export2Excel)   const tHeader=Util.cutValue(这一点。columns1,“标题”)   const filterVal=Util.cutValue(这一点。columns1,“关键”)   常量列表=this.tableData1   常量数据=https://www.yisu.com/zixun/this.formatJson (filterVal列表)   export_json_to_excel (tHeader、数据的列excel表”)   这一点。downloadLoading=false   })   },   formatJson (filterVal jsonData) {   jsonData返回。地图(v=比;filterVal。地图(j=比;v [j]))   }      

跑龙套。cutValue是公共方法,目的是为了将,tHeader和filterVal的值转成数组从而生成表格

        # # # Util模块//截值取价值   跑龙套。cutValue=https://www.yisu.com/zixun/function(目标,名称){   让arr=[]   (让我=0;我      

Export2Excel.js/Blob。js的代码

  

  

注意:vue中要实现表格的导入与导出,首先要安装两个依赖,

  

<代码> npm安装- s点击xlsx> npm安装- d script-loader>   

<强> 1,导入

        1。你们;输入id="上传" type="文件" @change=癷mportfxx(这)”接受="。应用程序/vnd.openxmlformats-officedocument.spreadsheetml csv。盾板,应用程序/s excel”/比;      importfxx (obj) {   让_this=;   console.log (“xxxxxxxxxxxxxxxxxxxxxxxxxxx1”);   这让inputDOM=efs.inputer美元;//通过DOM取文件数据   这一点。文件=event.currentTarget.files [0];   var rab=false;//是否将文件读取为二进制字符串   var f=this.file;   var=new FileReader读者();//如果(! FileReader.prototype.readAsBinaryString) {   FileReader.prototype。readAsBinaryString=function (f) {   var二进制=" ";   var rab=false;//是否将文件读取为二进制字符串   var pt=;   var白平衡;//读取完成的数据   var outdata;   var=new FileReader读者();   读者。onload=function (e) {   var字节=new Uint8Array (reader.result);   var长度=bytes.byteLength;   (var=0;我& lt;长度;我+ +){   二进制+=String.fromCharCode(字节[我]);   }   var XLSX=要求(“XLSX”);   如果(rab) {   世行=XLSX.read (btoa (fixdata(二进制)),{//手动转化   类型:“base64”   });   其他}{   世行=XLSX。读(二进制,{   类型:“二进制”   });   }   outdata=https://www.yisu.com/zixun/XLSX.utils.sheet_to_json (wb.Sheets [wb.SheetNames [0]]);//outdata就是你想要的东西   }   reader.readAsArrayBuffer (f);   }   如果(rab) {   reader.readAsArrayBuffer (f);   其他}{   reader.readAsBinaryString (f);   }   }

Vue实现导出excel表格功能