最近使用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> 代码。其次,在项目src目录下新建一个文件夹供应商(名字随意),在此文件夹下放置两个文件Blob.js和Export2Excal.js(下载地址:http://files.cnblogs.com/files/wangyunhui/vendor.rar),之后就可以愉快的导入导出了微笑。
<强> 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表格功能