easyexcel 实现代码


依赖

            
                com.alibaba
                easyexcel
                ${easyexcel.version}
            

2.2.0-beta2

controller

    // 导出表
    @ApiOperation(value="导出")
    @GetMapping(value = "/exportData")
    public void exportData(HttpServletResponse response) {
        dictService.exportData(response);
    }

    // 导入表
    @ApiOperation(value = "导入")
    @PostMapping("/importData")
    public Result importData(MultipartFile file) {
        dictService.importData(file);
        return Result.ok();
    }

service

    // 导出表
    @Override
    public void exportData(HttpServletResponse response) {
        try {
            // 设置下载信息
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("数据字典", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");

            // 查询数据库
            List dictList = baseMapper.selectList(null);
            List dictVoList = new ArrayList<>(dictList.size());
            // 把数据封装处理一下 只提取几列 没有全部要
            for(Dict dict : dictList) {
                DictEeVo dictVo = new DictEeVo();
                //BeanUtils.copyBean(dict, dictVo, DictEeVo.class);
                BeanUtils.copyProperties(dict,dictVo);
                dictVoList.add(dictVo);
            }
            //
            EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("数据字典").doWrite(dictVoList);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 导入表
    @Override
    @CacheEvict(value = "dict", allEntries=true)
    public void importData(MultipartFile file) {
        try {
            EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(baseMapper)).sheet().doRead();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }