项目中导出excel文件很常见,分为get和post方式,get相对简单些,在url后面拼接需要的参数
get请求方式传参如果是对象类型 需要 用encodeURI(JSON.stringify(params)) 转换一下
get请求方式拼接参数长度上限为2083,超过这个长度导出excel失败
post方式请求返回的是表格流文件,需要使用blob对象指定要读取的数据,在此记录下
`
exportFile() {
let that = this;
this.$http({
method: 'post',
url: this.$api.projectInfo.exportExcel,
data: JSON.stringify(this.exportData),
responseType: 'blob',//服务器返回的数据类型
}).then((res) => {
console.log(res, '响应状态');
let blob = new Blob([res], {type:"application/force-download"}) // Blob 对象表示一个不可变、原始数据的类文件对象
console.log(blob);
let fileReader = new FileReader() // FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件的内容
fileReader.readAsDataURL(blob)
//开始读取指定的Blob中的内容。一旦完成,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容
fileReader.onload = (e) => {
let a = document.createElement('a')
a.download = `项目应用信息台账.xlsx`
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
}).catch(err => {
console.log(err);
})
}
`