美文网首页
导出 导入 下载数据接口

导出 导入 下载数据接口

作者: 小别墅是毛坯 | 来源:发表于2020-01-09 14:51 被阅读0次
    /*********************pom***************/
     <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.0.0-beta6</version>
                <exclusions>
                    <exclusion>
                        <artifactId>commons-logging</artifactId>
                        <groupId>commons-logging</groupId>
                    </exclusion>
                    <exclusion>
                        <artifactId>commons-collections4</artifactId>
                        <groupId>org.apache.commons</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
            
    /**************controller**********/
    /** 导出**/
        @PostMapping(value = "/token")
        @ApiImplicitParams({@ApiImplicitParam(name = "ACCESS_TOKEN", value = "接口调用凭证", defaultValue = "06855244f2f221da4cd0a395c0d3c68c", dataType = "string", required = true, paramType = "query")})
        public void getTOKENRecordExport(HttpServletResponse response, @ApiParam(value = "条件") @RequestBody InquireConditionParam param) {
            List<DataTokenRecordDto> pageInfo = dataTokenRecordMapper.getTokenList(param);
            String fileName = new String(new SimpleDateFormat("yyyy-MM-dd").format(new Date()).getBytes(), StandardCharsets.UTF_8);
            try {
                ExcelWriter excelWriter = ExcelUtils.writeExcel(response.getOutputStream(), ExcelTypeEnum.XLSX, true, pageInfo);
                if (CollectionUtils.isEmpty(pageInfo)) {
                    fileName = "无数据";
                }
                response.setContentType("multipart/form-data");
                response.setCharacterEncoding("UTF-8");
                response.setHeader("Content-disposition", "attachment;filename=T享TOKEN列表-" + fileName + ".xlsx");
                excelWriter.finish();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    @ApiOperation(value = "导入Excel数据", notes = "导入Excel数据")
        @PostMapping("/import/excel/{cid}")
        public void importHouseExcel(MultipartFile file, @ApiParam("小区id") @PathVariable("cid") Integer cid) {
            try {
                ExcelListener listener = new ExcelListener();
                ExcelReader excelReader = ExcelUtils.readerExcel(file.getInputStream(), listener, HouseExcelParam.class);
                houseService.importHouseExcel(listener.getData(), cid);
                excelReader.finish();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @ApiOperation(value = "下载Excel模板", notes = "下载Excel模板")
        @GetMapping("/download/excel")
        public void downloadHouseExcel() {
            try {
                String path = getClass().getResource("/static/").getPath() + "house.xlsx";
                response.setContentType("application/octet-stream");
                response.setCharacterEncoding("utf-8");
                response.setHeader("Content-Disposition", "attachment; filename=house.xlsx");
                ExcelUtils.downloadExcel(path, response.getOutputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    //*****************service****************/
     @ApiOperation(value = "导入Excel数据", notes = "导入Excel数据")
        @PostMapping("/import/excel/{cid}")
        public void importHouseExcel(MultipartFile file, @ApiParam("小区id") @PathVariable("cid") Integer cid) {
            try {
                List<Map<String, String>> maps = ExcelUtils.parseExcel(file);
                houseService.importHouseExcel(maps, cid);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @ApiOperation(value = "下载Excel模板", notes = "下载Excel模板")
        @GetMapping("/download/excel")
        public void downloadHouseExcel() {
            try {
                String path = getClass().getResource("/static/").getPath() + "house.xlsx";
                response.setContentType("application/octet-stream");
                response.setCharacterEncoding("utf-8");
                response.setHeader("Content-Disposition", "attachment; filename=house.xlsx");
                ExcelUtils.downloadExcel(path, response.getOutputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
    /*****************utls********************/
        /**
         * @author qcdl
         */
        public final class ExcelUtils {
           /**
         * 导出
         *
         * @param out
         * @param excelType
         * @param needHead
         * @param data
         * @return
         */
        public static ExcelWriter writeExcel(OutputStream out, ExcelTypeEnum excelType, boolean needHead, List<? extends BaseRowModel> data) {
            ExcelWriter excelWriter = EasyExcelFactory.getWriter(out, excelType, needHead);
            Sheet sheet = new Sheet(1, 0, data.get(0).getClass());
            excelWriter.write(data, sheet);
            return excelWriter;
    
        }
    
        /**
         * 导入
         *
         * @param in
         * @param listener
         * @param clazz
         * @return
         */
        public static ExcelReader readerExcel(InputStream in, ExcelListener listener, Class<? extends BaseRowModel> clazz) {
            ExcelReader excelReader = EasyExcelFactory.getReader(in, listener);
            Sheet sheet = new Sheet(1, 1, clazz);
            excelReader.read(sheet);
            return excelReader;
        }
        }
           /**
         * 下载Excel
         *
         * @param path
         * @param out
         * @return
         * @throws IOException
         */
        public static void downloadExcel(String path, OutputStream out) throws IOException {
            FileInputStream input = new FileInputStream(path);
            byte[] bytes = new byte[2048];
            int len;
            while ((len = input.read(bytes)) != -1) {
                out.write(bytes, 0, len);
            }
    
            input.close();
        }
    

    相关文章

      网友评论

          本文标题:导出 导入 下载数据接口

          本文链接:https://www.haomeiwen.com/subject/eamyactx.html