MyExcel 2.7.0版本发布,容量设定&主动压缩&内存优化

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

内容简介:MyExcel 是一个集导入、导出、加密 Excel 等多项功能的 Java 工具包。 本次更新点如下: 修复在SXSSF模式下因提前写入磁盘导致合并单元格错误问题; 新增DefaultExcelBuilder、DefaultStreamExcelBuilder多级表头...

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

本次更新点如下:

  • 修复在SXSSF模式下因提前写入磁盘导致合并单元格错误问题;
  • 新增DefaultExcelBuilder、DefaultStreamExcelBuilder多级表头功能;
  • 新增读取Excel时间戳(Timestamp)的支持;
  • 新增DefaultStreamExcelBuilder导出zip压缩文件的支持(DefaultStreamExcelBuilder.buildAsZip("xxxx"));
  • 新增AttachmentExportUtil对一般性Path导出支持;
  • 优化DefaultStreamExcelBuilder转化workbook为path流程,使用提供的线程池异步转化,提升导出效率;
  • 优化SXSSF默认窗口内存保存行数为1;
  • 优化默认workbook类型为SXSSF,降低实际生产使用中内存占用;
  • 优化DefaultStreamExcelBuilder模型,降低一次性追加数据导致的内存急剧增长问题(使用Jprofiler测试,一百万数据,除首次导出所占内存较高外(三四百兆内),稳定占用内存一百兆左右);
  • 优化导出Excel模型边界定义,降低代码错误的可能性;

1. 多级标题支持

@ExcelColumn(order = 3, index = 3, width = 20,title = "扩展信息->绘画等级")
private String paintingLevel;

title使用符号"->"分隔多级标题,如需自定义分隔符,请使用@ExcelTable中titleSeparator属性。

效果如下:

MyExcel 2.7.0版本发布,容量设定&主动压缩&内存优化

2. Excel容量设定&多文件导出

DefaultStreamExcelBuilder defaultExcelBuilder = DefaultStreamExcelBuilder.of(ArtCrowd.class)
                .autoWidthStrategy(AutoWidthStrategy.CUSTOM_WIDTH)
                .capacity(10_000)
                .threadPool(Executors.newFixedThreadPool(10))
                .start();

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);
List<Path> paths = defaultExcelBuilder.buildAsPaths();

capacity(10_000)进行容量设定,代表一个Excel中最多可容纳行数,如Excel超过指定容量,则自动创建新的workbook,最后使用buildAsPaths导出文件列表。

3. Excel容量设定&主动压缩

DefaultStreamExcelBuilder defaultExcelBuilder = DefaultStreamExcelBuilder.of(ArtCrowd.class)
                .autoWidthStrategy(AutoWidthStrategy.CUSTOM_WIDTH)
                .capacity(10_000)
                .threadPool(Executors.newFixedThreadPool(10))
                .start();

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);
Path zip = defaultExcelBuilder.buildAsZip("测试文件");

buildAsZip("测试文件")用于构建压缩包,与容量设定相结合使用。

具体使用,请参见文档:https://github.com/liaochong/myexcel/wiki


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

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

Laravel框架关键技术解析

Laravel框架关键技术解析

陈昊、陈远征、陶业荣 / 电子工业出版社 / 2016-7 / 79.00元

《Laravel框架关键技术解析》以Laravel 5.1版本为基础,从框架技术角度介绍Laravel构建的原理,从源代码层次介绍Laravel功能的应用。通过本书的学习,读者能够了解Laravel框架实现的方方面面,完成基于该框架的定制化应用程序开发。 《Laravel框架关键技术解析》第1章到第4章主要介绍了与Laravel框架学习相关的基础部分,读者可以深入了解该框架的设计思想,学习环......一起来看看 《Laravel框架关键技术解析》 这本书的介绍吧!

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

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具