MyExcel 2.7.1 版本发布,BUG 修复 & 支持动态导出

栏目: 软件资讯 · 发布时间: 6年前

内容简介:MyExcel 是一个集导入、导出、加密 Excel 等多项功能的 Java 工具包。 导入:提供简便的API,读取Excel内容,并转化为List< Bean >。 导出:可快速导出海量数据的简单列表,可生成高复杂度布局的Excel,复杂布局指...

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

导入:提供简便的API,读取Excel内容,并转化为List< Bean >。

导出:可快速导出海量数据的简单列表,可生成高复杂度布局的Excel,复杂布局指的是包含多种不规则合并单元格、背景色、字体大小、斜体等,可自动划分Excel生成zip压缩包。

2.7.0版本提供多级表头、容量设定以及zip压缩包导出功能,如下-最终构建部分:

// 显式标明开始构建
DefaultStreamExcelBuilder defaultExcelBuilder = DefaultStreamExcelBuilder.of(ArtCrowd.class)
            .threadPool(Executors.newFixedThreadPool(10))
            .capacity(10_000)// 容量设定,每一个Excel可容纳最大行数
            .start();
// 多线程异步获取数据并追加至excel,join等待线程执行完成
List<CompletableFuture> futures = new ArrayList<>();
for (int i = 0; i < 100; i++) {
     CompletableFuture future = CompletableFuture.runAsync(() -> {
     List<ArtCrowd> dataList = this.getDataList();
     // 数据追加
     defaultExcelBuilder.append(dataList);
     });
     futures.add(future);
}
futures.forEach(CompletableFuture::join);

// 最终构建-workbook
Workbook workbook = defaultExcelBuilder.build();
AttachmentExportUtil.export(workbook, "艺术生信息", response);

// 最终构建-List<Path>
List<Path> paths = defaultExcelBuilder.buildAsPaths();
// do something

// 最终构建-zip压缩包
Path zip = defaultExcelBuilder.buildAsZip("test");
AttachmentExportUtil.exportAsZip(zip,"finalName");

Path由java7提供,可以认为是File的替代,经使用后收到一些反馈,做了一些修正:

  • 修复导出zip压缩包未主动关闭问题(未关闭实际也不影响);
  • 修复DefaulExcelBuilder除标题外无其他数据时样式不生效问题;
  • 优化DefaultStreamExcelBuilder发生异常时临时文件的处理流程;
  • 优化AttachmentExportUtil导出Path流程,主动删除Path;

另外,本次在DefaultExcelBuilder支持按Map动态导出,如下:

Map<String, String> headerMap = new HashMap<>();
headerMap.put("a", "测试A");
headerMap.put("b", "测试B");

List<Map<String, Object>> dataMapList = new ArrayList<>();
Map<String, Object> v1 = new HashMap<>();
v1.put("a", "数据a1");
v1.put("b", 3);

Map<String, Object> v2 = new HashMap<>();
v2.put("a", "数据a2");
v2.put("b", 5);

dataMapList.add(v1);
dataMapList.add(v2);

List<String> titles = new ArrayList(headerMap.values());
List<String> orders = new ArrayList(headerMap.keySet());
Workbook workbook = DefaultExcelBuilder.getInstance()
        .sheetName("sheet1")
        .titles(titles)
        .fieldDisplayOrder(orders)
        .build(dataMapList);
FileExportUtil.export(workbook, new File("/tmp/zz.xlsx"));

具体,请移步文档:https://github.com/liaochong/myexcel/wiki

如有任何建议,可在ISSUE提出:https://github.com/liaochong/myexcel/issues

最后在性能问题上说明下:MyExcel在实际生产环境中使用,千万级数据导出(大量数据必须使用DefaultStreamExcelBuilder),内存稳定占用100-200兆

MyExcel 2.7.1 版本发布,BUG 修复 & 支持动态导出


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

首席产品官2 从白领到金领

首席产品官2 从白领到金领

车马 / 机械工业出版社 / 79元

《首席产品官》共2册,旨在为产品新人成长为产品行家,产品白领成长为产品金领,最后成长为首席产品官(CPO)提供产品认知、能力体系、成长方法三个维度的全方位指导。 作者在互联网领域从业近20年,是中国早期的互联网产品经理,曾是周鸿祎旗下“3721”的产品经理,担任CPO和CEO多年。作者将自己多年来的产品经验体系化,锤炼出了“产品人的能力杠铃模型”(简称“杠铃模型”),简洁、直观、兼容性好、实......一起来看看 《首席产品官2 从白领到金领》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具