vue 实现下载并导出excel文件(下载后台返回的文件流)

在使用Vue进行开发时,遇到从后台获取的导出Excel接口返回乱码的问题。通过Postman测试,了解到需要处理返回的文件流来实现下载。以下是解决此问题的三个步骤:1.编写接口函数;2.实现下载文件的方法;3.在组件中调用接口进行文件下载。

刚接触vue没多久,最近开发中遇到请求后台导出excel表格的接口返回乱码,postman请求发现需要下载返回的文件流。按照下面的 步骤就可以实现文件的下载导出。

步骤一:先写接口函数

export function exportAudit(data) {
    return axios({
        url: '/dataassets/asset/audit/export',
        method: 'get',
        params: data,
        responseType: 'blob',
    })
}


第二步:写个下载文件的函数方法

// 下载文件
downloadFile(res, fileName) {
    let blob = new Blob([res.data]); //res为从后台返回的数据
    if (!fileName) {
        fileName = res.headers['content-disposition'].split('filename=').pop();
    }
    if ('msSaveOrOpenBlob' in navigator) {
        window.navigator.msSaveOrOpenBlob(blob, fileName);
    } else {
        const elink = document.createElement('a');
        elink.download = fileName;
        elink.style.display = 'none';
        elink.href = URL.createObjectURL(blob);
        document.body.appendChild(elink);
        elink.click();
        URL.revokeObjectURL(elink.href);
        document.body.removeChild(elink);
    }
}


第三步:组件中调用接口实现下载

  //导出
  export() {
		    var info={  //需要传入的参数
		                pageNum: this.pageConfig.currentPage,
		                pageSize: this.pageConfig.pageSize,
		                verifyId: this.form.verifyId,
		                keyWord: this.form.name
		            }
            exportAudit(info).then((res) => {
                //日期转换成字符串
                let date = dateToStr(new Date());
                // downloadFile是实现表格的下载函数方法
                downloadFile(res, 'XX报表-' + date + '.xls');
            }).catch(() => {})
     },


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值