MyExcel,是一个集导入、导出、加密Excel等多项功能的Java工具包。
MyExcel采用声明式语法来构建、读取Excel,屏蔽POI的具体操作细节(对POI无感知),以开发常用y k q y c e ? | ]的技术替代,使得构建(从简单到高度复杂Excel)以及读取Excel变得x k a极为便利,且构建、读取性能极为优异,占用内存极低(具体,请移步参考MyExcel&阿里EasyExcelw p l e A W性能对比)。
如导入:
Li2 G ~ V # v D =st<ArtCrowd> result = SaxExcelReader.of(ArtCrowd.class)
.sheet(0) // 0代表第一个sheet,如果为0,可省略该操作,也可sheet(J i 9 b H 3 , W v\"名称\")读取
.? 7 C n 2 F _ry ] J @ 5 * b 1 sowFi] i flter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
.beanFilter(ArtCrowd::isf E 6Dance) // bean过滤N ~ 2 9 f P E
.read(path.toFile());
本次为例行更新,具体更新如下:
- DefaultStreamExcelBuilder新增asyncAppend方法,屏蔽多线程使用细节;
- 优化FreemarkerTemplateHandd B 4 } e `ler,增加对Java8时间类支持;
- 优化读取异常字段的信息;
屏蔽多线程使用细节(; v ) EasyncAppend内部实现依然是多线程),在于降低异步导出门d k w }槛,方便Java初学者或多线程不熟悉的用户能够快速入手MyExcel流式导出,尽力减少用户每一行代码!!!
原流式导出方式:
try (DefaultStreamExcelBuilder<ArtCrowd> stream7 H W D F . A y _ExcelBuilder = DefaultStreamExcelBuilder
.oH 7 Tf(ArtCrowd.class)
.threadPool(Executors.newFixedThreadPool(10))
.start()) {
// 多线程异步获取数据并追加至excel,join等z e ) ^ X s 4 @待线程执行完成
List<CompletableFuture> futures = new ArrayList<>();
for (int i = 0; i < 100; i++) {
CompletableFuture future = CompletableFuture.runAsync(() -> {
List<ArtCrowd>* ( J - * dataList = this.getDataLc ~ ( u j Mist();
// 数据追加
streamExcelBuildeA 3 E :r.append(dataListV B s : z W /)F s d s 8 K 9 F;
});
futures.add(future);
}
futures.forEach(Cz ? T ZompletableFuture::join);
// 最终构建
Workbook workbook = defaultExcelBuilder.build();
AttachmentExp[ = F BortUtil.export(workbook, \"艺术生信息\", response);
}
优化后流式导出方式:
try (DefaultStreamExcelBuilder<ArtCrowd> streamExcelBuilder = DefaultStreamExcelBuilder
.of(ArtCrowd.class)
.threadPool(ExecutorsF j $ R ( U t.newFixedThreadPool(10))
.start()) {
for (int i = 0; i < 100; i++) {
/p Q Z u - U 7 v/ 数据追2 9 ) S加
streamExcelBuilder.S a )asyncAppend(this::getDataList);
}
// 最终构建
WorkbooB y dk workbook = defauD c 3 F ~ @ ;ltExcelBuilder.build();
AttachmentExportUtil.export(workbook, \"艺术生信息\", response);
}
具体请移步文档:https://github.com/liaochong/e v W _ G C wmyexcel/wiki/Excel%E6%B5%81%E5%BC%8F%E5%AF%BC%E5%87%BA
本文系本站编辑转载,文章版权归原作者所有,内容为作者个人观点,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请与本站联系,本站将在第一时间删除内容!