1.引入hutool的pom依賴
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.1.4</version>
</dependency>
2.工具類代碼
1 public class ExcelExportUtils { 2 3 public static void exportExcelByResponse(ExcelWriter excelWriter, HttpServletResponse response, String fileName, HttpServletRequest request) throws IOException { 4 String userAgent = request.getHeader("USER-AGENT"); 5 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); 6 if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent, "Trident") || StringUtils.contains(userAgent,"Edge")){//IE 瀏覽器 7 fileName = URLEncoder.encode(fileName,"UTF8"); 8 }else{//火狐,google等其他瀏覽器 9 fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); 10 } 11 response.setHeader("Content-Disposition", "attachment; filename=" + fileName); 12 //客戶端不緩存 13 response.setCharacterEncoding("UTF-8"); 14 response.addHeader("Pargam", "no-cache"); 15 response.addHeader("Cache-Control", "no-cache"); 16 Workbook workbook = excelWriter.getWorkbook(); 17 ServletOutputStream outputStream = response.getOutputStream(); 18 workbook.write(outputStream); 19 workbook.close(); 20 outputStream.close(); 21 } 22 }
3.業務調用
1 @Override 2 public void exportDailyReportDetailExcel(ReportDetailVO reportDetailVO, HttpServletResponse response, HttpServletRequest request) { 3 ExcelWriter bigWriter = ExcelUtil.getBigWriter(); 4 try { 5 // 導出數據 6 List<ReportDetailVO> reportDetailVOList = statisticalReportMapper.getDailyReportDetailList(reportDetailVO); 7 // 設置列寬 8 bigWriter.setColumnWidth(0, 15); 9 bigWriter.setColumnWidth(1, 10); 10 bigWriter.setColumnWidth(2, 10); 11 bigWriter.setColumnWidth(3, 20); 12 bigWriter.setColumnWidth(4, 20); 13 bigWriter.setColumnWidth(5, 15); 14 // 導出列名,對應實體類屬性名 15 bigWriter.addHeaderAlias("companyName", "單位"); 16 bigWriter.addHeaderAlias("deptName", "部門"); 17 bigWriter.addHeaderAlias("nickName", "姓名"); 18 bigWriter.addHeaderAlias("idCard", "身份證"); 19 bigWriter.addHeaderAlias("address", "身份證地址"); 20 bigWriter.addHeaderAlias("phone", "聯系電話"); 21 bigWriter.setOnlyAlias(true); 22 bigWriter.write(reportDetailVOList); 23 } catch (Exception e) { 24 e.printStackTrace(); 25 response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 26 } 27 try { 28 ExcelExportUtils.exportExcelByResponse(bigWriter, response, "報備統計" + reportDetailVO.getSearchDate(), request); 29 } catch (IOException e) { 30 throw new BaseFrameException(1, "導出失敗", false); 31 } 32 } 33 }