5 POI报表导出
5.1 需求分析
完成当月人事报表的导出:包含当月入职员工信息,离职员工信息
java
5.2 人事报表导出
5.2.1 步骤分析
- 构造Excel表格数据
- 建立工做簿
- 建立sheet
- 建立行对象
- 建立单元格对象
- 填充数据,设置样式
- 下载
5.2.2 代码实现
(1)配置controllerweb
@RequestMapping(value = "/export/{month}", method = RequestMethod.GET) public void export(@PathVariable(name = "month") String month) throws Exception { //1.构造数据 List<EmployeeReportResult> list = userCompanyPersonalService.findByReport(companyId,month+"%"); //2.建立工做簿 XSSFWorkbook workbook = new XSSFWorkbook(); //3.构造sheet String[] titles = {"编号", "姓名", "手机","最高学历", "国家地区", "护照号", "籍贯", "生日", "属相","入职时间","离职类型","离职缘由","离职时间"}; Sheet sheet = workbook.createSheet(); Row row = sheet.createRow(0); AtomicInteger headersAi = new AtomicInteger(); for (String title : titles) { Cell cell = row.createCell(headersAi.getAndIncrement()); cell.setCellValue(title); } AtomicInteger datasAi = new AtomicInteger(1); Cell cell = null; for (EmployeeReportResult report : list) { Row dataRow = sheet.createRow(datasAi.getAndIncrement()); //编号 cell = dataRow.createCell(0); cell.setCellValue(report.getUserId()); //姓名 cell = dataRow.createCell(1); cell.setCellValue(report.getUsername()); //手机 cell = dataRow.createCell(2); cell.setCellValue(report.getMobile()); //最高学历 cell = dataRow.createCell(3); cell.setCellValue(report.getTheHighestDegreeOfEducation()); //国家地区 cell = dataRow.createCell(4); cell.setCellValue(report.getNationalArea()); //护照号 cell = dataRow.createCell(5); cell.setCellValue(report.getPassportNo()); //籍贯 cell = dataRow.createCell(6); cell.setCellValue(report.getNativePlace()); //生日 cell = dataRow.createCell(7); cell.setCellValue(report.getBirthday()); //属相 cell = dataRow.createCell(8); cell.setCellValue(report.getZodiac()); //入职时间 cell = dataRow.createCell(9); cell.setCellValue(report.getTimeOfEntry()); //离职类型 cell = dataRow.createCell(10); cell.setCellValue(report.getTypeOfTurnover()); //离职缘由 cell = dataRow.createCell(11); cell.setCellValue(report.getReasonsForLeaving()); //离职时间 cell = dataRow.createCell(12); cell.setCellValue(report.getResignationTime()); } String fileName = URLEncoder.encode(month+"人员信息.xlsx", "UTF-8"); response.setContentType("application/octet-stream"); response.setHeader("content-disposition", "attachment;filename=" + new String(fileName.getBytes("ISO8859-1"))); response.setHeader("filename", fileName); workbook.write(response.getOutputStream()); }
(2)添加serviceapp
//根据企业id和年月查询 public List<EmployeeReportResult> findByReport(String companyId, String month) { return userCompanyPersonalDao.findByReport(companyId,month); }
(3)dao层实现dom
@Query(value = "select new com.ihrm.domain.employee.response.EmployeeReportResult(a,b) " + "FROM UserCompanyPersonal a LEFT JOIN EmployeeResignation b ON a.userId=b.userId WHERE a.companyId = ?1 AND a.timeOfEntry LIKE ?2 OR (b.resignationTime LIKE ?2)") List<EmployeeReportResult> findByReport(String companyId, String month);
本文同步分享在 博客“cwl_java”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。svg