首页 > 社交 > 科普中国

有了这个开源工具后,我五点就下班了

常驻编辑 科普中国 2022-09-25 工具   表头   轮子   文件系统   实体   框架   功能   文件   项目   数据
QnK拜客生活常识网

  使用过easyexcel框架的一些读者知道,每个导入功能都要写一个对应的Listener进行数据转换,在很多时间其实转换的逻辑都是类似的,不同的只不过是转换后数据处理的业务逻辑不一样。QnK拜客生活常识网

  「本开源项目的excel工具则利用Java中的泛型和Java8中的Consumer接口将相同的部分(转换逻辑)抽取出来,不同的部分则单独传入(数据处理的业务逻辑),这样就避免了每个导入都需要创建一个相类似的Listerner,减少了类的创建和提高了开发效率。」QnK拜客生活常识网

  「部分源码如下:」QnK拜客生活常识网

 /**
     * 通用导入excel文件方法
     *
     * @param fileStream 导入的文件流
     * @param rowDto 接收excel每行数据的实体
     * @param rowAction 将接收到的实体进行自定义的业务处理逻辑方法
     * @param  实体类型
     */
    public static  void importFile(InputStream fileStream, T rowDto, ThrowingConsumer> rowAction) {
        // 获取excel通用监听器
        ExcelImportCommonListener commonListener = new ExcelImportCommonListener<>(rowAction);
        // 读取excel文件并导入
        EasyExcel.read(fileStream, rowDto.getClass(), commonListener).sheet().doRead();
    }
    
/**
     * excel文件导出(可以包含多个sheet页),固定表头(通过实体指定属性的方式)
     * @param response
     * @param fileName   导出文件名
     * @param head       导出表头(多个sheet页就是多个集合元素)
     * @param exportData 需要导出数据
     * @param sheetNames sheet页的名称,为空则默认以:sheet + 数字规则命名
     */
    public static  void exportFile(String fileName, List head, List> exportData, List sheetNames, HttpServletResponse response) {
        if (Objects.isNull(response) || StrUtil.isBlank(fileName) || CollUtil.isEmpty(head)) {
            log.info("ExcelExportUtil exportFile required param can't be empty");
            return;
        }
        ExcelWriter writer = null;
        try {
            response.setContentType(ExportConstant.EXCEL_CONTENT_TYPE);
            response.setCharacterEncoding(ExportConstant.UTF_8);
            response.setHeader(ExportConstant.CONTENT_DISPOSITION, ExportConstant.ATTACHMENT_FILENAME + fileName + ExportConstant.XLSX_SUFFIX);
            // 设置导出的表格样式
            HorizontalCellStyleStrategy horizontalCellStyleStrategy = getExportDefaultStyle();
            writer = EasyExcel.write(response.getOutputStream()).registerWriteHandler(horizontalCellStyleStrategy).build();
            for (int itemIndex = 0; itemIndex < exportData.size(); itemIndex++) {
                // 表头数据
                Object headData = head.get(itemIndex);
                // sheet页的数据
                List list = exportData.get(itemIndex);
                WriteSheet sheet = EasyExcel.writerSheet(itemIndex, CollUtil.isEmpty(sheetNames) ? ExportConstant.SHEET_NAME + itemIndex + 1 : sheetNames.get(itemIndex)).head(headData.getClass()).build();
                writer.write(list, sheet);
            }
        } catch (Exception e) {
            log.error("ExcelExportUtil exportFile in error:{}", e);
        } finally {
            if (null != writer) {
                writer.finish();
            }
        }
    }

  「使用案例如下(在工具中每个项目都有具体的案例,不懂的还可以留言跟博主沟通):」QnK拜客生活常识网

/**
     * 导入用户数据案例
     *
     * @param file
     */
    @Transactional(rollbackFor = Exception.class)
    public void uploadUserListDemoWithExcel(MultipartFile file, String username) throws Exception {
        // 此处先校验导入的文件类型是否为excel
        String type = FileTypeUtil.getType(file.getInputStream());
        if (StrUtil.isBlank(type) || type.contains(ImportConstant.XLS_TYPE) || type.contains(ImportConstant.XLSX_TYPE)) {
            // 返回校验失败信息
            return;
        }
        User user = new User();
        user.setId(100);
        user.setName("外层");
        user.setPassword("外层");
        userService.save(user);
        // 调用统一导入方法
        ExcelImportUtil.importFile(file.getInputStream(), new UserDto(), UserServiceImpl::saveUserList);
    }

 /**
     * 导出案例
     *
     * @param response
     */
    public void exportUserListDemoWithExcel(HttpServletResponse response) {
        // 表头(使用excel中的注解定义,如果表头不固定,请使用ExcelExportUtil.exportWithDynamicData进行导出)
        List    

相关阅读:

  • 微信深度清理工具在哪里进去
  • 皮沙发怎样清洗用什么工具
  • 科麦斯工具怎么样(科麦斯工具套装怎么样)
  • pe工具哪个好(微pe工具箱有哪些工具)
  • 工具在哪里找(绘画工具在哪里)
  • ftp软件哪个好(ftp客户端工具)
  • root工具哪个好用(安卓手机一键root软件哪个好)
  • ps渐变工具在哪里(ps渐变调整层在哪)
  • ps的魔法棒在哪里(2021版ps魔棒工具在哪)
  • ps魔法棒在哪里(电脑ps魔棒工具在哪里)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。