vue excel上传预览和table内容下载到excel文件中
excel上传预览
这里会用到
npmielement-ui npmixlsx
在vue的template中写上,排版和css看个人需求
选择文件 上传到服务器
vue的js中写上
exportdefault{ data(){ return{ listTable:[] } }, methods:{ //上传预览 importf(obj){ letthat=this; letinputDOM=this.$refs.inputer;//通过DOM取文件数据 this.file=event.currentTarget.files[0]; varrABS=false;//是否将文件读取为二进制字符串 varf=this.file; varreader=newFileReader(); //if(!FileReader.prototype.readAsBinaryString){ FileReader.prototype.readAsBinaryString=function(f){ varbinary=""; varrABS=false;//是否将文件读取为二进制字符串 varpt=this; varwb;//读取完成的数据 varoutdata; varreader=newFileReader(); reader.onload=function(e){ varbytes=newUint8Array(reader.result); varlength=bytes.byteLength; for(vari=0;i{ letobj={}; obj.name=v.姓名; obj.department=v.部门; arr.push(obj); }); //放入到element的table中显示出来 that.listTable=arr; }; reader.readAsArrayBuffer(f); }; if(rABS){ reader.readAsArrayBuffer(f); }else{ reader.readAsBinaryString(f); } //这里补个时间问题,excel的时间格式是序列号,如果用的上需要转化 //需要在这个位置加上调用方法 //outdata.map(v=>{ //letobj={}; //obj.time=ExcelDateToJSDate(v.时间); //arr.push(obj); //}); //这个方法暂时是目前找的比较好,日期不是很精确,精确不到秒(暂未查出小时和分钟出问题),excel日期序列号装换成时间格式, //functionExcelDateToJSDate(serial){ //letutc_days=Math.floor(serial-25569); //letutc_value=utc_days*86400; //letdate_info=newDate(utc_value*1000); //letfractional_day=serial-Math.floor(serial)+0.0000001; //lettotal_seconds=Math.floor(86400*fractional_day); //letseconds=total_seconds%60; //total_seconds-=seconds; //lethours=Math.floor(total_seconds/(60*60)); //letminutes=Math.floor(total_seconds/60)%60; //letctime=newDate(date_info.getFullYear(),date_info.getMonth(),date_info.getDate(),hours,minutes,seconds); //这是时间拼接,需要什么格式可以自行拼接 //return(ctime.getFullYear()+'-'+(ctime.getMonth()+1)+'-'+ctime.getDate()); //} }, //上传按钮 fileBtn(){ //上传这里可以分两种,一种是直接获取input的文件上传给后端,一种是我们已经解析了excel所以只要把listTable数组传给后端 //两种方法都可行,看自己需求 } } }
下面是excel上传文件模板
table内容下载到excel文件中
因为方式不一样,需要在安装
npmifile-saver
在vue的script中引入
importXLSXfrom"xlsx"; importFileSaverfrom"file-saver";
内容导出,写在vue的methods中
downBtn(){ //获取table的dom元素 letvv=XLSX.utils.table_to_book(document.getElementById("tableExcel")); letvbouts=XLSX.write(vv,{ bookType:"xlsx", bookSST:true, type:"array" }); try{ FileSaver.saveAs( //这是下载的excel文件名 newBlob([vbouts],{type:"application/octet-stream"}), "员工表.xlsx" ); }catch(e){ if(typeofconsole!=="undefined")console.log(e,vbouts); } returnvbouts; }
总结
以上所述是小编给大家介绍的vueexcel上传预览和table内容下载到excel文件中,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。