• Java使用EasyExcel和hutool 完成Excel简单的导入导出


    <!--        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);
    
            }
        }
  • 相关阅读:
    第二阶段冲刺01
    第十三周进度条
    构建之法阅读笔记5
    水王2
    购买一批书的最低价格
    第十二周进度条
    个人工作总结08
    个人工作总结07
    人机交互设计分析之搜狗输入法
    第八周的学习进度条
  • 原文地址:https://www.cnblogs.com/chuan-yoyo/p/14918553.html
Copyright © 2020-2023  润新知