首页 > 社交 > 科普中国

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

常驻编辑 科普中国 2022-09-25 工具   表头   轮子   文件系统   实体   框架   功能   文件   项目   数据
head = Stream.of(new UserExportVo()).collect(Collectors.toList()); // 数据(使用两层list为了兼容多个sheet页,如果是不同的sheet页则放在不同的List集合中) List> exportDataList = new ArrayList<>(); List exportItem = new ArrayList<>(); // 查询数据 List dbData = userService.list(); // 将数据转换成导出需要的实际数据格式,此处只是演示 for (User user : dbData) { UserExportVo vo = new UserExportVo(); BeanUtil.copyProperties(user, vo); exportItem.add(vo); } exportDataList.add(exportItem); // sheet页名称-自定义,如果没有则传空 List sheetNameList = Stream.of("sheet1").collect(Collectors.toList()); ExcelExportUtil.exportFile("user", head, exportDataList, sheetNameList, response); }

二、csv工具

  Csv即逗号分隔值,也可以称为字符分隔符,「与excel等文件相比,excel文件中会包含许多格式信息,占用的空间会更大,所以Csv在很多大数据场景导出、导入场景是非常常见的。该工具实现采用的是开源的univocity-parsers框架实现。」QnK拜客生活常识网

  之前有一篇专门讲解轮子之王项目为何使用univocity-parsers框架集成csv的详细过程,有兴趣的读者可以点击链接查看:集成csv工具的前因后果QnK拜客生活常识网

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

 /**
     * 使用实体bean接收csv数据文件并进行数据落盘
     *
     * @param inputStream
     * @param errorList
     * @param rowDtoClass
     * @param rowAction
     * @param 
     */
    public static  void importCsvWithBean(InputStream inputStream, List errorList, Class rowDtoClass, ThrowingConsumer> rowAction) {
        // 定义bean解析者:用于将csv中数据绑定到实体属性中,然后存储带list集合上
        BeanListProcessor rowProcessor = new BeanListProcessor<>(rowDtoClass);
        CsvParserSettings setting = getDefaultSetting(errorList);
        setting.setProcessor(rowProcessor);
        // 创建csv文件解析
        CsvParser csvParser = new CsvParser(setting);
        csvParser.parse(inputStream);
        // 获取数据映射后的集合
        List dataList = rowProcessor.getBeans();
        // 校验必填字段
        for (T row : dataList) {
            // 校验导入字段
            ImportValid.validRequireField(row, errorList);
        }
        // 执行数据持久化
        persistentBeanDataToDb(dataList, rowAction);
    }
    
   /**
     * 导出csv文件(表头和行都以实体的方式)
     *
     * @param response
     * @param head
     * @param rowDataList
     */
    public static  void exportCsvWithBean(HttpServletResponse response, String fileName, T head, List rowDataList) {
        CsvWriter writer = null;
        try {
            // 设置响应头格式
            response.setContentType(ExportConstant.EXCEL_CONTENT_TYPE);
            response.setCharacterEncoding(ExportConstant.UTF_8);
            response.setHeader(ExportConstant.CONTENT_DISPOSITION, ExportConstant.ATTACHMENT_FILENAME + fileName + ExportConstant.CSV_SUFFIX);

            // 设置导出格式
            CsvWriterSettings setting = getDefaultWriteSetting();
            // 创见bean处理器,用于处理写入数据
            BeanWriterProcessor<?> beanWriter = new BeanWriterProcessor<>(head.getClass());
            setting.setRowWriterProcessor(beanWriter);

            // 导出数据
            writer = new CsvWriter(response.getOutputStream(), setting);
            writer.processRecords(rowDataList);
            writer.flush();
        } catch (Exception e) {
            log.error("CsvExportUtil exportCsvWithBean in error:{}", e);
        } finally {
            if (Objects.nonNull(writer)) {
                writer.close();
            }
        }
    } 

  「使用案例如下:」

相关阅读:

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