前端传入参数,后台返回一个excel文件前端怎么办?

方法一

0)背景

我想导出一张2019年12月份并且hrID为2的所有销售信息的excel表,后台已经写好了,Controller返回的是一个ResponseEntity<byte[]>,简言之:我想要一张excel表,导出的内容为2019年12月份某一个人的销售情况

1)前端封装axios

let base = '';
export const downloadRequest = (url, params)=>{
  return axios({
    method: 'GET',
    url: `${base}${url}`,
    responseType: 'blob',
    headers: {
      'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
    }
  });
}

2全局引入

import {downloadRequest} from "@/util/api"
Vue.prototype.downloadRequest = downloadRequest;

2写方法

exportWork(){
	this.exportWorkDisabled = true;//导出按钮开启禁用
	this.exprotWorkIcon = 'el-icon-loading';//导出按钮更换icon
	this.exportWorkText = '正在导出...';//导出按钮更换文字
	this.downloadRequest('后台接口?参数='+参数1+'&参数2='+参数2).then(data=>{
	      if(data){
	            const blob = new Blob([data]);
	            const aEle = document.createElement('a');// 创建a标签
	            const href = window.URL.createObjectURL(blob);// 创建下载的链接
	            aEle.href = href;
	            aEle.download = new Date()+"销售表.xls"; //下载后文件名
	            document.body.appendChild(aEle);
	            aEle.click();// 点击下载
	            document.body.removeChild(aEle);//下载完成移除元素
	            window.URL.revokeObjectURL(href);//释放掉blob对象
	            this.exportWorkDisabled = false;//导出按钮关闭禁用
	            this.exprotWorkIcon = 'fa fa-download';//导出按钮还原icon
	            this.exportWorkText = '导出';//导出按钮还原文字
	      }
	});
},

方法二

后台用GET方式,通过字符串拼接实现传参,实例:

后台

@GetMapping("/get")//只是个例子不要太在意细节
public ResponseEntity<?,?> get(String s1,String s2,String s3){
	return ResponseEntity<?,?>();
}

前端

<el-button @click="downLoad()"></el-button>
<!-- 反正具体就这么个意思,纯手写的 -->
...
...
<script>
export default{
	data:{
		return(){
			s1:"",
			s2:"",
			s3:""
		}
	}
	methods:{
		downLoad(){
			location.href = "/get?s1="+s1+"&s2="+s2+"&s3"+s3
		}
	}
}
</script>

6)个人VX:N2548841623;QQ:2548841623;个人网站:nieqiang.xyz

5)完结撒花

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值