举例EasyPoi excel下载
后台代码
Map<String, Object> map = new HashMap<>();
String path = "templates/01_Template.xlsx";
TemplateExportParams params = new TemplateExportParams(path, 0);
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
String fileName = "文件名";
OutputStream outputStream = null;
try {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
outputStream = response.getOutputStream();
workbook.write(outputStream);
} catch (IOException e) {
log.error("[monitor][IO][表单功能]", e);
} finally {
if(outputStream != null){
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Vue前端代码
修改request.js response拦截器
service.interceptors.response.use(
(response) => {
const header = response.headers
const contentType = header['content-type']
if (contentType.indexOf("application/json") != -1) {
const res = response.data
if (res.code === 1) {
return response.data
}else{
}
} else if(contentType.indexOf("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {
const blob = new Blob([response.data], { type: contentType })
let objectUrl = URL.createObjectURL(blob)
let fileName = header['content-disposition'].split('=')[1]
let link = document.createElement('a')
link.href = objectUrl
link.download = fileName
link.click()
URL.revokeObjectURL(objectUrl);
}
},
(error) => {
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)