静态网站漏洞,用新华做网站名是否侵权,官方网站娱乐游戏城,园林公司网站模板EasyExcel 学习之 导出 “提示问题” 现象分析解决#xff08;伪代码#xff09;前端 POST 实现后端实现 现象
EasyExcel 支持导出 xlsx、xls、csv 三种文件格式。在导出过程中可能发生各种异常#xff0c;当发生异常时应该提示错误信息而非导出一个错误的文件。
分析
首… EasyExcel 学习之 导出 “提示问题” 现象分析解决伪代码前端 POST 实现后端实现 现象
EasyExcel 支持导出 xlsx、xls、csv 三种文件格式。在导出过程中可能发生各种异常当发生异常时应该提示错误信息而非导出一个错误的文件。
分析
首先后端应该支持两种不同格式content-type内容的返回其次前端应该支持两种不同格式content-type内容的解析处理
解决伪代码
前端 POST 实现
const axios require(axios);axios({url: https://api.example.com/export,method: post,data: {param1: value1,param2: value2},responseType: blob,headers: {Authorization: Bearer YOUR_TOKEN}
})
.then(response {if (response.data response.data.type application/json) {const render new FileReader();reader.onload (e) {let content e.target.result;content JSON.parse(content);this.$antMessage.info(content.msg);}} else {var blob new Blob([response.data]);const url window.URL.createObjectURL(blob);const link document.createElement(a);link.style.display none;link.href url;link.setAttribute(download, name);document.body.appendChild(link);link.click();document.body.removeChild(link);}
})
.catch(error {console.error(Error:, error);
});后端实现
if (errorCondition) {throw new BusinessException(errorCode, errorMsg);
}response.setContentType(ExcelConst.MEDIA_TYPE_EXCEL);
response.setHeader(ExcelConst.CONTENT_DISPOSITION, String.format(%s:%s%s.%s, ExcelConst.ATTACHMENT, ExcelConst.FILENAME, System.currentTimeMillis(), ExcelTypeEnum.XLSX.getValue()));try (OutputStream os response.getOutputStream(); ByteArrayOutputStream baos new ByteArrayOutputStream()) {ExcelWriter excelWriter EasyExcel.write(baos).charset(Charset.forName(GBK)) // 或者 UTF-8.autoCloseStream(true).excludeColumnFieldNames(Lists.newArrayList()).excelType(ExcelTypeEnum.XLSX).build();WriteSheet writeSheet EasyExcel.writerSheet(sheetNo, sheetName).head(clazz).build();excelWriter.write(sheetData, writeSheet);excelWriter.finish();os.write(baos.toByteArray());
} catch (Exception e) {log.error(String.format(Excel 导出失败%s, ), e);
}