public void exportCsv(ExamineDTO examineDTO, HttpServletRequest request, HttpServletResponse response) throws ServiceException {
try {
String fileName = "报表导出_" + System.currentTimeMillis() + ".csv";
String excelName = excelName(fileName, request);
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + excelName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
List<String[]> list = this.examineDao.queryExamineCsvReportList(examineDTO);
CSVUtil.write(response, list);
} catch (ServiceException e) {
logger.error("报表数据导出异常,异常信息为:{}", e.getMessage(), e);
throw new ServiceException("报表数据导出异常", e.getMessage(), e);
}
}
private String excelName(String name, HttpServletRequest request) throws ServiceException {
String userAgent = request.getHeader("USER-AGENT");
String ie = "MSIE";
String ie11 = "like Gecko";
String mozilla = "Mozilla";
String excelName = CommonDTO.EMPTY_STRING;
try {
if (userAgent.contains(ie) || userAgent.contains(ie11)) {
excelName = URLEncoder.encode(name, "UTF8");
} else if (userAgent.contains(mozilla)) {
excelName = new String(name.getBytes(), "ISO8859-1");
} else {
excelName = URLEncoder.encode(name, "UTF8");
}
} catch (Exception e) {
logger.error("csv文件名编码转换异常,异常信息为:{}", e.getMessage());
throw new ServiceException("先审后发报表数据导出异常", e.getMessage(), e);
}
return excelName;
}