MyExcel,是一个集导入、导出、加密Excel等多项功能的Java工具包。

MyExcel采用声明式语法来构建、读取Excel,屏蔽POI的具体操作细节(对POI无感知),以开发常用的技术替代,使得构建(从简单到高度复杂Excel)以及读取Excel变得极为便利,且构建、读取性能极为优异,占用内存极低(具体,请移步参考MyExcel&阿里EasyExcel性能对比)。

如导入:

List result = SaxExcelReader.of(ArtCrowd.class)        .sheet(0) // 0代表第一个sheet,如果为0,可省略该操作,也可sheet("名称")读取        .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行        .beanFilter(ArtCrowd::isDance) // bean过滤        .read(path.toFile());

本次为例行更新,具体更新如下:

  • DefaultStreamExcelBuilder新增asyncAppend方法,屏蔽多线程使用细节;
  • 优化FreemarkerTemplateHandler,增加对Java8时间类支持;
  • 优化读取异常字段的信息;

屏蔽多线程使用细节(asyncAppend内部实现依然是多线程),在于降低异步导出门槛,方便Java初学者或多线程不熟悉的用户能够快速入手MyExcel流式导出,尽力减少用户每一行代码!!!

原流式导出方式:

try (DefaultStreamExcelBuilder streamExcelBuilder = DefaultStreamExcelBuilder                .of(ArtCrowd.class)                .threadPool(Executors.newFixedThreadPool(10))                .start()) {    // 多线程异步获取数据并追加至excel,join等待线程执行完成    List futures = new ArrayList<>();    for (int i = 0; i < 100; i++) {        CompletableFuture future = CompletableFuture.runAsync(() -> {            List dataList = this.getDataList();            // 数据追加            streamExcelBuilder.append(dataList);        });        futures.add(future);    }    futures.forEach(CompletableFuture::join);    // 最终构建    Workbook workbook = defaultExcelBuilder.build();    AttachmentExportUtil.export(workbook, "艺术生信息", response);}

优化后流式导出方式:

try (DefaultStreamExcelBuilder streamExcelBuilder = DefaultStreamExcelBuilder                .of(ArtCrowd.class)                .threadPool(Executors.newFixedThreadPool(10))                .start()) {    for (int i = 0; i < 100; i++) {        // 数据追加        streamExcelBuilder.asyncAppend(this::getDataList);    }    // 最终构建    Workbook workbook = defaultExcelBuilder.build();    AttachmentExportUtil.export(workbook, "艺术生信息", response);}

具体请移步文档:https://github.com/liaochong/myexcel/wiki/Excel%E6%B5%81%E5%BC%8F%E5%AF%BC%E5%87%BA

多线程导出excel_【开源资讯】MyExcel 3.7.0 发布,屏蔽多线程处理细节相关推荐

  1. 最适合中国国情的开源授权协议ZPL 1.0发布

    为什么80%的码农都做不了架构师?>>>    最适合中国国情的开源授权协议: Z PUBLIC LICENSE 1.0 发布了.欢迎大家访问:http://zpl.pub 一.英文 ...

  2. 完全开源im框架_【行业资讯】移动端开源 IM 框架 MobileIMSDK v5.0 发布!

    一.更新内容简介 本次更新为主要版本更新,强势升级,可同时支持TCP.UDP两种协议,精心封装之下,实现一套API.两种协议同时并存.可能是市面上唯一同时支持UDP+TCP两种协议的同类IM框架. 二 ...

  3. .net5 不支持winform_「开源资讯」.NET 5.0 RC 2 发布

    微软上周发布了 .NET 5.0 RC 2,此版本已接近最终发布,也是11月正式版发布前的最后一个 RC 版本.微软还表示这是一个"go live"版本,支持用于生产环境,当然这不 ...

  4. C#开源音乐播放器MetroPlayer3.0发布

      一.说明 MetroPlayer3.0是在MetroMusic1.05及2.0版本的基础之上,进行重构和改进的软件产品.从3.0开始,本软件正式更名为MetroPlayer.MetroPlayer ...

  5. Java开源开发平台O2OA V7.0发布,支持Docker容器化部署和三员管理模式

    O2OA开发平台开源至今,已经有很多开发者参与我们每个版本的迭代和更新,有的开发者已经利用O2OA在公司内部搭建公司的开发平台,有的开发者在商业项目中使用O2OA平台作为信息化系统建设的基础能力平台. ...

  6. Wizard 开源文档管理系统1.0发布啦

    Wizard 是一款开源文档管理系统,项目地址为 https://github.com/mylxsw/wizard.这个项目是 我 在2017年就开始开发的,起初只是想做一款能够在公司内部把Swagg ...

  7. 开源进展 | WeCross v1.2.0 发布,实现FISCO BCOS与Fabric 2.0 的跨链适配

    WeCross是微众银行自主研发并完全开源的区块链跨链协作平台,致力于促进跨行业.机构和地域的跨区块链信任传递和商业合作,有助于实现异构区块链系统之间安全可信的互操作. WeCross v1.0.0. ...

  8. HTML5开源游戏引擎lufylegend1.5.0发布

    说明 lufylegend1.5.0版终于发布了,本来打算再完善一下才发布的,但是最近实在太忙了,1.5.0版拖了又拖,所以决定先发布,等继续完善后再发布1.5.1版,API也相对完善了一下,并加入到 ...

  9. HTML5开源游戏引擎lufylegend1.7.0发布

    lufylegend1.7.0版发布,下载包内含开发示例已经增加到20多个,为了更方便操作游戏中的声音等,加入了音频和视频操作,另外更新了API文档. lufylegend.js引擎的下载链接 htt ...

最新文章

  1. linux系统管理及vim
  2. 哔哩哔哩小甲鱼 汇编语言 记录一下 寄存器(内存访问)两个小实验
  3. ORA-600 [kddummy_blkchk] [18038] 一例
  4. Qt Linguist 开发人员 programmers
  5. 获取淘宝开发平台的sessionKey
  6. 【MySQL】PREPARE 的应用
  7. oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法
  8. e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)
  9. 转:关掉Archlinux中烦人的响铃
  10. Java多线程学习七:线程池的 4 种拒绝策略和 6 种常见的线程池
  11. apache服务器性能不行,Apache服务器性能调优
  12. 《剑指offer》第五十六题(数组中唯一只出现一次的数字)
  13. 职称计算机考试excel内容,2020年职称计算机考试EXCEL试题练习
  14. eeprom和编程器固件 k2_瞎鸡儿折腾之K2/K2P刷机,刷入第三方固件,傻吊教程!
  15. 极点五笔烦人的几个快捷键.
  16. JS方法 数组倒序排列
  17. 摄影测量单像后方交会实验报告
  18. Syntax Error Error No ESLint configuration found in statusGitmibsrc
  19. 电脑通过二维码打开手机链接
  20. U盘拷贝4G以上的文件(非格式化)

热门文章

  1. 一口气带你踩完五个 List 的大坑!
  2. 「预警」尽快升级FastJson版本,避免恶意请求导致OOM!
  3. 跳槽时,这些Java面试题99%会被问到
  4. python DBSCAN聚类例子
  5. CircleLoss
  6. pytorch 批量筛选
  7. java 多线程顺序执行
  8. `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55)
  9. pycharm 打开cfg高亮
  10. bat面试题 python 单链表反转排序