多线程导出excel_【开源资讯】MyExcel 3.7.0 发布,屏蔽多线程处理细节
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 发布,屏蔽多线程处理细节相关推荐
- 最适合中国国情的开源授权协议ZPL 1.0发布
为什么80%的码农都做不了架构师?>>> 最适合中国国情的开源授权协议: Z PUBLIC LICENSE 1.0 发布了.欢迎大家访问:http://zpl.pub 一.英文 ...
- 完全开源im框架_【行业资讯】移动端开源 IM 框架 MobileIMSDK v5.0 发布!
一.更新内容简介 本次更新为主要版本更新,强势升级,可同时支持TCP.UDP两种协议,精心封装之下,实现一套API.两种协议同时并存.可能是市面上唯一同时支持UDP+TCP两种协议的同类IM框架. 二 ...
- .net5 不支持winform_「开源资讯」.NET 5.0 RC 2 发布
微软上周发布了 .NET 5.0 RC 2,此版本已接近最终发布,也是11月正式版发布前的最后一个 RC 版本.微软还表示这是一个"go live"版本,支持用于生产环境,当然这不 ...
- C#开源音乐播放器MetroPlayer3.0发布
一.说明 MetroPlayer3.0是在MetroMusic1.05及2.0版本的基础之上,进行重构和改进的软件产品.从3.0开始,本软件正式更名为MetroPlayer.MetroPlayer ...
- Java开源开发平台O2OA V7.0发布,支持Docker容器化部署和三员管理模式
O2OA开发平台开源至今,已经有很多开发者参与我们每个版本的迭代和更新,有的开发者已经利用O2OA在公司内部搭建公司的开发平台,有的开发者在商业项目中使用O2OA平台作为信息化系统建设的基础能力平台. ...
- Wizard 开源文档管理系统1.0发布啦
Wizard 是一款开源文档管理系统,项目地址为 https://github.com/mylxsw/wizard.这个项目是 我 在2017年就开始开发的,起初只是想做一款能够在公司内部把Swagg ...
- 开源进展 | WeCross v1.2.0 发布,实现FISCO BCOS与Fabric 2.0 的跨链适配
WeCross是微众银行自主研发并完全开源的区块链跨链协作平台,致力于促进跨行业.机构和地域的跨区块链信任传递和商业合作,有助于实现异构区块链系统之间安全可信的互操作. WeCross v1.0.0. ...
- HTML5开源游戏引擎lufylegend1.5.0发布
说明 lufylegend1.5.0版终于发布了,本来打算再完善一下才发布的,但是最近实在太忙了,1.5.0版拖了又拖,所以决定先发布,等继续完善后再发布1.5.1版,API也相对完善了一下,并加入到 ...
- HTML5开源游戏引擎lufylegend1.7.0发布
lufylegend1.7.0版发布,下载包内含开发示例已经增加到20多个,为了更方便操作游戏中的声音等,加入了音频和视频操作,另外更新了API文档. lufylegend.js引擎的下载链接 htt ...
最新文章
- linux系统管理及vim
- 哔哩哔哩小甲鱼 汇编语言 记录一下 寄存器(内存访问)两个小实验
- ORA-600 [kddummy_blkchk] [18038] 一例
- Qt Linguist 开发人员 programmers
- 获取淘宝开发平台的sessionKey
- 【MySQL】PREPARE 的应用
- oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法
- e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)
- 转:关掉Archlinux中烦人的响铃
- Java多线程学习七:线程池的 4 种拒绝策略和 6 种常见的线程池
- apache服务器性能不行,Apache服务器性能调优
- 《剑指offer》第五十六题(数组中唯一只出现一次的数字)
- 职称计算机考试excel内容,2020年职称计算机考试EXCEL试题练习
- eeprom和编程器固件 k2_瞎鸡儿折腾之K2/K2P刷机,刷入第三方固件,傻吊教程!
- 极点五笔烦人的几个快捷键.
- JS方法 数组倒序排列
- 摄影测量单像后方交会实验报告
- Syntax Error Error No ESLint configuration found in statusGitmibsrc
- 电脑通过二维码打开手机链接
- U盘拷贝4G以上的文件(非格式化)
热门文章
- 一口气带你踩完五个 List 的大坑!
- 「预警」尽快升级FastJson版本,避免恶意请求导致OOM!
- 跳槽时,这些Java面试题99%会被问到
- python DBSCAN聚类例子
- CircleLoss
- pytorch 批量筛选
- java 多线程顺序执行
- `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55)
- pycharm 打开cfg高亮
- bat面试题 python 单链表反转排序