Vue使用Export2Excel导出表格数据(导出链表数据)

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;
},
上一篇:vue emit事件添加额外参数


下一篇:Node 环境配置