vue项目使用Export2Excel导出Excel表格详细步骤可以参考:http://t.csdn.cn/m208m
不过要是表中存在外表的数据(多表链表查询出来的数据),也想一起导出怎么办?
下面是我自己重写的 formatJson() 方法:
export2Excel(){
var that = this;
// 这里必须使用绝对路径,使用@/+存放export2Excel的路径
import('@/vendor/Export2Excel').then(excel => {
// 导出的表头名信息,也就是选中列
const tHeader = ['ID', '用户名', '性别(0=女,1=男)', '头像', 'openID', '省份', '城
市', '国家', '语言', '身份', '上家id', '手机号', '余额', '积分',
'状态'];
// 导出的表头字段名,需要导出表格字段名
const filterVal = ['id', 'nickName', 'gender', 'avatarUrl', 'openid', 'province',
'city', 'country', 'language', 'localIdentity.identity',
'localUser.id', 'phone', 'balance', 'integral', 'status'];
// 此处为你选中的数据
const list = that.excelData ;
const data = that.formatJson(filterVal, list);
// 导出的表格名称,根据需要自己命名
excel.export_json_to_excel(tHeader, data, '用户信息');
});
this.downloadLoading = false;
},
// 格式转换,直接复制即可
formatJson (filterVal, jsonData) {
const returnData = []
jsonData.map(v =>{
v = filterVal.map(j => {
// 如果是外表字段 即存在 "."
if(j.indexOf('.') != -1){
//截取到"."之前的字符
const subStar = j.substring(0, j.indexOf('.'))
//截取到"."之后的字符
const subEnd = j.substring(j.indexOf('.')+1, j.length)
// 如果联表数据不为空
if(v[subStar] != null){
return v[subStar][subEnd];
}
}else{
return v[j];
}
})
returnData.push(v)
})
return returnData;
},