public void genTrscodOrNodeTemplate(String templateName,HttpServletRequest request, HttpServletResponse response) {
//下载模板
Workbook wb = null;
try {
ClassPathResource classPathResource = new ClassPathResource("template/"+templateName+".xlsx");
try (InputStream inputStream = classPathResource.getInputStream()) {
String fileName = templateName+".xlsx";
byte[] fileBytes = IOUtils.toByteArray(inputStream);
//防止对原数据进行操作
wb = WorkbookFactory.create(new ByteArrayInputStream(fileBytes));
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
String userAgent = request.getHeader("User-Agent");
//针对IE或者以IE为内核的浏览器:
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
} else {
//非IE浏览器的处理:
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
}
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
try (ServletOutputStream outStream = response.getOutputStream()) {
wb.write(outStream);
}
}
} catch (Exception e) {
LOGGER.error("下载模板出现问题{}",e.getMessage());
throw new EchoException(SERVER_ERROR.getRtnCode(), "下载模板出现问题");
} finally {
try {
if (wb != null) {
wb.close();
}
} catch (IOException e) {
LOGGER.error("关闭下载模板失败文件hssfworkbook出错:{}", e.getMessage());
throw new EchoException(SERVER_ERROR.getRtnCode(), "关闭下载模板失败文件hssfworkbook出错");
}
}
}