<!-- hutool工具包--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.1.0</version> </dependency> <!-- EasyExcel依懶--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.5</version> </dependency>
/** * 任務導入 使用hutool工具類導入Excel文件 * @return */ @PostMapping("/import") @ApiOperation("用戶任務-任務導入") public Result fileUpload( @RequestParam("file") MultipartFile file ) { try { //使用hutool工具類導入Excel文件 ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); //讀取excel中的數據,與User實體類一一對應 List<User> listData = reader.readAll(User.class); //批量存入數據庫中 //userTaskService.saveImportTask(listData); } catch (IOException e) { e.printStackTrace(); } return new Result<>(); }
/** * 統計導出 文件下載 * * @return */ @GetMapping(value = "/export") @ApiOperation(value = "統計導出") public void statisticsExport( @ApiParam(name = "province", value = "省") @RequestParam("province") String province, @ApiParam(name = "city", value = "市") @RequestParam("city") String city, @ApiParam(name = "counter", value = "區") @RequestParam("counter") String counter, @ApiParam(name = "startTime", value = "開始時間") @RequestParam("startTime") Long startTime, @ApiParam(name = "endTime", value = "結束時間") @RequestParam("endTime") Long endTime, @ApiParam(name = "orderByType", value = "排序類型 ASC 升序 DESC 倒序 默認倒序") @RequestParam("orderByType") String orderByType, HttpServletResponse response) { try { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("統計", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); FastDateFormat fastDateFormat = FastDateFormat.getInstance(DatePattern.NORM_DATETIME_PATTERN, TimeZone.getTimeZone("Asia/Shanghai")); String startTimeStr = fastDateFormat.format(DateUtil.beginOfDay(new DateTime(startTime, TimeZone.getTimeZone("Asia/Shanghai")))); String endTimeStr = fastDateFormat.format(DateUtil.endOfDay(new DateTime(endTime, TimeZone.getTimeZone("Asia/Shanghai")))); // DemoDTO 查詢條件入參 DemoDto dto= new DemoDto(); dto.setProvince(province); dto.setCity(city); dto.setCounter(counter); dto.setStartTime(startTimeStr); dto.setEndTime(endTimeStr); dto.setOrderByType(orderByType); //根據查詢條件查詢數據庫---把需要導出的數據放到list中 List<DemoVO> list = task.findStatisByParams(DemoDto); // 這里需要設置不關閉流 String dateTitle = "時間段:" + fastDateFormat.format(new DateTime(startTime,TimeZone.getTimeZone("Asia/Shanghai"))) + "至" + DateUtil.formatDate(new DateTime(endTime, TimeZone.getTimeZone("Asia/Shanghai"))); String rangeTitle = "范圍:" + (StrUtil.isBlank(province) ? "全部" : province) + "/" + (StrUtil.isBlank(city) ? "全部" : city) + "/" + (StrUtil.isBlank(counter) ? "全部" : counter); EasyExcel.write(response.getOutputStream(), ClientDetailStatisVO.class) .head(ClientDetailStatisVO.head(dateTitle, rangeTitle)) .autoCloseStream(Boolean.FALSE).sheet("統計") //上面從數據庫查出來的數據 .doWrite(statisByParams); } catch (Exception e) { // 重置response response.reset(); throw new CustomException(Result.Status.INVALID_PARAM); } }