1.首先引入hutool依赖
2.使用hutool工具 将数据库查出的数据生成excel文件 通过流读写成二进制数据返回前端
@PostMapping("/downloadFileData") @ResponseBody public ResponseResult<byte[]> downloadFileData() { ResponseResult<byte[]> result = new ResponseResult<>(); List<Vacation> vacationList = vacationService.findVacationAll(); File file = new File("D:\\excel\\vacationList.xlsx"); ExcelWriter writer = ExcelUtil.getWriter(file); writer.addHeaderAlias("vacationId", "请假条编号"); writer.addHeaderAlias("empId", "请假员工编号"); writer.addHeaderAlias("vacationTypeId", "请假类型编号"); writer.addHeaderAlias("vacationStartTime", "开始时间"); writer.addHeaderAlias("vacationEndTime", "结束时间"); writer.addHeaderAlias("remark", "备注"); writer.addHeaderAlias("deptId", "员工所在部门编号"); writer.addHeaderAlias("cellPhone", "手机号码"); writer.addHeaderAlias("vacationStatusId", "请假条审批状态编号"); writer.addHeaderAlias("pictureUrl", "照片文件名称"); writer.write(vacationList, true); writer.close(); try { InputStream inputStream = new FileInputStream(file); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] b = new byte[1024]; Integer length = 0; while (-1 != (length = inputStream.read(b))) { outputStream.write(b, 0, length); } byte[] byteArray = null; byteArray = outputStream.toByteArray(); outputStream.close(); inputStream.close(); System.err.println(byteArray); result.setCode(200); result.setMsg("导出成功"); result.setData(byteArray); } catch (IOException e) { result.setCode(500); result.setMsg("系统异常"); e.printStackTrace(); throw new RuntimeException(e); } return result; }