您现在的位置是:首页 > 文章详情

MyExcel 3.7.0 发布,屏蔽多线程处理细节

日期:2020-04-13点击:387

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

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

如导入:

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

优化后流式导出方式:

 try (DefaultStreamExcelBuilder<ArtCrowd> 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

原文链接:https://www.oschina.net/news/114840/myexcel-3-7-0-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章