axios调用,代码如下:
data.umId = formData['umId'];
data.name = formData['name'];
data.supplierCode = formData['supplierCode'];
data.month = formData['month'];
axios({
type:'post',
path:'/attendSum/exportSummaryAttendList',
data:data,
responseType:'blob',
fn:data=>{
//从header中获取文件名
let header = data.headers;
let fileName = header["content-disposition"].split(";")[1].split("filename=")[1];
fileName = decodeURIComponent(fileName);
let blob = new Blob([data.data]);
//let fileName = "****.xlsx"; 这里也可以自定义文件名
let 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); // 释放URL 对象
document.body.removeChild(eLink);
},
errFn:()=>{
if(data.data != undefined){
this.$message.error('数据查询失败')
}
}
后端核心代码:
/**
* excel下载
*
* @param fileName 下载时的文件名称
* @param response
* @param workbook excel数据
*/
private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));
workbook.write(response.getOutputStream());
} catch (Exception e) {
throw new IOException(e.getMessage());
}
}