今天有一個導出Excel的需求,因為之前做的都是前后端分離的項目,前端代碼壓根就不用考慮,后台只管接收參數,返回數據流就ok了。但是這次前后端不分離的項目就踩了坑。
因為我之前看過相關教程,前端可以直接通過window.location.href = '接口地址'
將Excel下載下來,但是這種方式有個很大的弊端,只能發送get請求。如果說我們需要對數據進行模糊查詢后導出,就無法實現了。
不過在經過了我一番百度之后,找到了解決方法......
前端導出Excel的方式
1.window.location.href = '接口地址
- 缺點:無法發送post請求
2.利用隱藏表單解決(這里用的是JQuery的方法,所以使用的時候要記得引入JQuery)
// 導出,使用這種方式可以,使用ajax請求不可以導出excel
function exportExcel(){
let form = $("<form>"); //創建form標簽
form.attr("style","display:none");
form.attr("method","post");//設置請求方式
form.attr("action","${base}/kdOrder/exportExcel"); //action屬性設置請求路徑
$("body").append(form); //頁面添加form標簽
//訂單號輸入框
let orderNo = $("<input>") //創建input標簽
orderNo.attr("type","hidden") //設置隱藏域
orderNo.attr("name","orderNo") //設置發送后台數據的參數名
orderNo.attr("value",$('#selectOrder').val().trim());
form.append(orderNo);
form.submit();//表單提交即可下載!
}