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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。