需要下载一个poi的jar包。
控制器
@Override public void getContractListExecl(Contract contract, BindingResult result, HttpServletRequest req, HttpServletResponse response) throws IOException { List<Map<String, Object>> sttList = contractService.getContracts(contract);// 得到需要导出的数据 int i = 0; // 第一步,创建一个webbook,对应一个Excel文件 @SuppressWarnings("resource") HSSFWorkbook wb = new HSSFWorkbook(); // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet("title"); // 设置表格默认列宽度为15个字节 sheet.setDefaultColumnWidth((short) 20); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short HSSFRow row = sheet.createRow(i); // 第四步,创建单元格,并设置值表头 设置表头居中 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 创建一个居中格式 HSSFCell cell = row.createCell(0); cell.setCellValue("用户姓名"); cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue("电话"); cell.setCellStyle(style); cell = row.createCell(2); cell.setCellValue("家庭医生团队名称"); cell.setCellStyle(style); cell = row.createCell(3); cell.setCellValue("服务办理人姓名"); cell.setCellStyle(style); cell = row.createCell(4); cell.setCellValue("服务办理人电话"); cell.setCellStyle(style); cell = row.createCell(5); cell.setCellValue("服务办理人代码"); cell.setCellStyle(style); cell = row.createCell(6); cell.setCellValue("完成签约时间"); cell.setCellStyle(style); cell = row.createCell(7); cell.setCellValue("服务完成ITV编码"); cell.setCellStyle(style); cell = row.createCell(8); cell.setCellValue("服务完成时间"); cell.setCellStyle(style); cell = row.createCell(9); for (Map<String, Object> row_ : sttList) { row = sheet.createRow(++i); // 第四步,创建单元格,并设置值 row.createCell(0) .setCellValue(row_.get("userName") == null ? "###" : row_.get("userName").toString()); row.createCell(1) .setCellValue(row_.get("userPhone") == null ? "###" : row_.get("userPhone").toString()); row.createCell(2).setCellValue(row_.get("dgName") == null ? "###" : row_.get("dgName").toString()); row.createCell(3) .setCellValue(row_.get("proxyName") == null ? "###" : row_.get("proxyName").toString()); row.createCell(4).setCellValue(row_.get("proxyPhone") == null ? "###" : row_.get("proxyPhone").toString()); row.createCell(5).setCellValue(row_.get("proxyCode") == null ? "###" : row_.get("proxyCode").toString()); row.createCell(6).setCellValue(row_.get("updateTime") == null ? "###" : row_.get("updateTime").toString()); row.createCell(7).setCellValue(row_.get("itvToken") == null ? "###" : row_.get("itvToken").toString()); row.createCell(8).setCellValue(row_.get("itvUpdateTime") == null ? "###" : row_.get("itvUpdateTime").toString()); } String fileName = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); response.setHeader("content-disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1") + ".xls"); OutputStream fout = response.getOutputStream(); wb.write(fout); fout.close(); } }
前端调用该接口就可以了!
效果图: