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

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

内容简介: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 修复 & 支持动态导出


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

查看所有标签

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

Data Structures and Algorithm Analysis in Java

Data Structures and Algorithm Analysis in Java

Mark A. Weiss / Pearson / 2011-11-18 / GBP 129.99

Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course wa......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!

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

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具