vue java实现下载问题_vue通过接口直接下载java生成好的Excel表格案例

通过浏览器直接访问导出接口就会自动下载创建好的 Excel 表格。但是我们在vue里使用axios请求接口,一般是处理json数据,如果要处理文件流数据,需要做下特殊处理即可直接下载文件。

假如 下载Excel接口为:/apis/downExcel,则请求如下

import axios from 'axios'

export const exportFile = params => {

var param = new URLSearchParams()

param.append('beginTime', params.beginTime)

param.append('endTime', params.endTime)

return axios({

method: 'post',

data: param,

url: '/apis/downExcel',

responseType: 'blob'

})

}

下载按钮触发下载方法如下:

downExcel() {

var params = {

beginTime: this.times[0],

endTime: this.times[1]

};

exportFile(params).then(

data => {

/** 获取生成设置好的文件名 */

var filename = data.headers["content-disposition"];

filename = filename.split("=")[1];

filename = decodeURIComponent(filename, "utf-8");

/** 接收文件流 */

const blob = new Blob([data.data]);

let url = URL.createObjectURL(blob);

/** 模拟浏览器操作Document,并模拟下载动作 */

let link = document.createElement("a");

link.style.display = "none";

link.href = url;

link.setAttribute("download", filename);

document.body.appendChild(link);

link.click();

},

error => {

console.log(error);

this.$message.error("下载异常,请稍后再试");

});

}

这样就可以在vue项目中完整下载Excel接口,当然vue也有生成Excel的插件,接收后台的json数据然后在前端生成并下载。

补充知识:Vue实现通过后端接口导出Excel表格

需求:后端提供下载接口,返回二进制文件流,前端导出为xlsx格式的Excel表格

实现:

1、按钮调用下载接口

2、new Blob导出

bd2611a1324fba4b9481ec4487446c74.png

bc1be5b712f884bca54f7388796e8ee7.png

PS:

1、第一步请求接口时,注意要设置请求responseType为blob类型,否则下载后,显示格式错误,无法打开

2、new Blob请求是,注意修改type类型为application/vnd.ms-excel

35b1e4520b6b831b051f4b973c86f734.png

57e3992adf5845e9baa4dd8a41943c60.png

以上这篇vue通过接口直接下载java生成好的Excel表格案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2020-10-25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值