前言
如果觉得本文有帮助 记得点赞三连哦 十分感谢!
1.getDescription方法
注意:首先封装一个方法在Util.js文件中
import XLSX from 'xlsx'
export default {
getIdFrom:function(o){
let id = null;
if(o != null && o.hasOwnProperty('description')){
id = o.id
} else {
id = o
}
return id
},
getDescription:function(key,list){
let id = this.getIdFrom(key);
for(let key in list){
if(list[key] != null && list[key].id == id){
return list[key].description || list[key].name || '-'
}
}
return ''
},
}
2.使用方法
<template>
<el-button @click="Download()">一键下载</el-button>
</template>
<script>
import * as XLSX from 'xlsx'; //使用前先导入xlsx文件
export default{
methods:{
toDownload(){
this.downloadFilepro(res.data.header,res.data.list);
},
downloadFilepro(listHeader,data){
let tableList = [];
data.forEach((item)=>{
const row = {};
for(const key in listHeader){
swith(key){
case 'deal_user_id':
row[listHeader[key]] = this.$util.getDescription(item[key],this.adminAll);
breack;
case 'tagging_user_id':
row[listHeader[key]] = this.$util.getDescription(item[key], this.adminAll);
breack;
default:
row[listHeader[key]] = item[key];
breack;
}
}
tableList.push(row);
});
let header = { header:[] };
for(const key in listHeader){
header.header.push(listHeader[key]);
}
let ws = XLSX.utils.json_to_sheet(tableList,header);
ws['!cols']=[{ wpx: 100 },{ wpx: 100 },{ wpx: 100 },]; //设置xlsx表格宽度
var sheetName = 'sheet1';
var workbook = {
SheetNames:[sheetName],
Sheets:{},
};
workbook.Sheets[sheetName] = ws;
var wopts = {
bookType:'xlsx', // 要生成的文件类型
bookSST:true,// 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
type:'binary',
};
XLSX.write(workbook,wopts);
XLSX.writeFile(workbook,`下载.xlsx`);
}
}
}
</script>