MyExcel 3.0.0.RC 发布:重构&性能提升

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

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

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

  • 导入:提供简便的API,读取Excel内容,并转化为List< Bean >。
  • 导出:可快速导出海量数据的简单列表,可生成高复杂度布局的Excel,复杂布局指的是包含多种不规则合并单元格、背景色、字体大小、斜体、下拉列表等,可自动划分Excel生成zip压缩包。

用近2个月时间重构,MyExcel 3.0.0.RC版本于今日正式发布使用,本次修改点概览如下:

  • 修复DefaultExcelBuilder、DefaultStreamExcelBuilder自定义样式无效问题;
  • 修复读取含小数点整数错误问题;
  • 修复DefaultStreamExcelBuilder海量数据导出多sheet页,无法全部固定标题行问题;
  • 修复DefaultStreamExcelBuilder续写时重设工作簿类型错误;
  • 基于DefaultStreamExcelBuilder重写DefaultExcelBuilder,在保证API简单便捷的情况下,根源上解决性能问题;
  • 新增DefaultExcelBuilder、DefaultStreamExcelBuilder支持图片导出;
  • 新增DefaultExcelBuilder、DefaultStreamExcelBuilder支持全局样式设置,隔行样式设置;
  • 新增DefaultExcelBuilder、DefaultStreamExcelBuilder、模板ExcelBuilder均支持自定义行高度;
  • 新增DefaultStreamExcelBuilder新增cancel、clear接口,增强资源主动清理能力;
  • 新增各项ExcelBuilder单元测试,提升项目稳定性;
  • 新增读取异常时,相关行以及内容提示,加快问题定位速度;
  • 删除rowAccessWindowSize选项,默认采用最佳实践,也避免使用者不熟悉导致的错误使用,不予向下兼容;
  • 修改autoWidthStrategy方法为widthStrategy方法,加强接口语意;
  • 原DefaultStreamExcelBuilder的start(int waitQueueSize,Class[] groups)参数改为方法选项,waitQueueSize()、groups();
  • 同一文件续写时支持同名称续写;
  • 重构SaxExcelReader,提升代码可读性;
  • CsvBuilder新增append功能,允许对已生成的文件进行数据追加;
  • DefaultStreamExcelBuilder时间处理类增加缓存,进一步提升导出性能;

需要注意的是,因大面积重构,造成了部分的API无法兼容3.0.0.RC以下版本:

  1. 删除rowAccessWindowSize选项;
  2. 原DefaultStreamExcelBuilder的start(int waitQueueSize,Class[] groups)参数改为方法选项,waitQueueSize()、groups();
// 新设定分组、等待队列容量方式
DefaultStreamExcelBuilder excelBuilder = DefaultStreamExcelBuilder.of(CommonPeople.class)
                .start(100,CommonPeople.class);

// 新设定分组、等待队列容量方式
DefaultStreamExcelBuilder excelBuilder = DefaultStreamExcelBuilder.of(CommonPeople.class)
                .groups(CommonPeople.class)
                .waitQueueSize(100)
                .start();

具体更新点如下:

1. 新增csv追加数据方式

CsvBuilder<CsvPeople> csvBuilder = CsvBuilder.of(People.class);
for (int i = 0; i < 10; i++) {
    csvBuilder.append(data(1000));
}
Csv csv = csvBuilder.build();

AttachmentExportUtil.export(csv.getFilePath(), "test.csv", response);

// 该种方式会覆盖原append.csv文件
csv.write(Paths.get("/User/append.csv"));

// 该种方式会在原append.csv文件继续追加数据,而不是覆盖
csv.write(Paths.get("/User/append.csv"),true);

2. 自定义高度(Bean形式)

@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
@ExcelTable(sheetName = "人员信息", rowHeight = 50)
public class CommonPeople {

    @ExcelColumn(title = "姓名", index = 0)
    String name;

    @ExcelColumn(title = "年龄", index = 1)
    Integer age;

    @ExcelColumn(title = "是否会跳舞", groups = CommonPeople.class, index = 2)
    boolean dance;

    @ExcelColumn(title = "金钱", decimalFormat = "#,000.00", index = 3)
    BigDecimal money;
}

设定rowHeight即可。

3. 自定义高度(模板方式)

<% DIRECTIVE SAFE_OUTPUT_OPEN; %>
<table>
    <caption>${sheetName}</caption>
    <thead>
        <tr style="background-color: #6495ED">
            <th colspan="3" style="text-align: center;vertical-align: middle;font-weight: bold;font-size: 14px;">产品介绍</th>
        </tr>
        <tr>
            <% for(title in titles){ %>
            <th>${title}</th>
            <% } %>
        </tr>
    </thead>
<% if(data!=null){ %>
    <tbody>
    <% for(item in data){ %>
    <tr style="height: 100px;">
        <td>${item.category}</td>
        <td>${item.name}</td>
        <td>${item.count}</td>
    </tr>
    <% } %>
</tbody>
<% } %>
</table>
<%
//关闭安全输出。
DIRECTIVE SAFE_OUTPUT_CLOSE;
%>

设定高度样式 style="height: 100px;"即可。

4. 隔行样式设置

@ExcelColumn(order = 0, title = "姓名",style = {"title->color:red;","even->color:yellow;","odd->background-color:green;width:50"})
private String name;

odd、even对应奇偶行样式。

其余,请移步文档:https://github.com/liaochong/myexcel/wiki

欢迎大家使用,有任何问题可通过github issue提出,会尽量及时回复!!!


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

查看所有标签

猜你喜欢:

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

An Introduction to Probability Theory and Its Applications

An Introduction to Probability Theory and Its Applications

William Feller / Wiley / 1991-1-1 / USD 120.00

Major changes in this edition include the substitution of probabilistic arguments for combinatorial artifices, and the addition of new sections on branching processes, Markov chains, and the De Moivre......一起来看看 《An Introduction to Probability Theory and Its Applications》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换