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


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

查看所有标签

猜你喜欢:

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

Probability and Computing

Probability and Computing

Michael Mitzenmacher、Eli Upfal / Cambridge University Press / 2005-01-31 / USD 66.00

Assuming only an elementary background in discrete mathematics, this textbook is an excellent introduction to the probabilistic techniques and paradigms used in the development of probabilistic algori......一起来看看 《Probability and Computing》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

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

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试