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

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

本次更新为综合更新,涉及众多新特性以及bug修复,更新点如下:

  • 修复DefaultExcelBuilder、DefaultStreamExcelBuilder固定标题行无法横向移动问题;
  • 修复SaxExcelReader读取.xls文件流失败问题;
  • 修复DefaultExcelBuilder/DefaultStreamExcelBuilder非连续列复杂表头共存问题;
  • 修复空Tr情况下报java.lang.UnsupportedOperationException异常问题;
  • 修复读取Bigdecimal时,未除去非字符,如“,”等导致的错误问题;
  • 新增CsvBuilder,支持生成.csv文件;
  • 新增.csv文件读取模块,使用SaxExcelReader读取;
  • SaxExcelReader支持按sheet名称读取;
  • 新增DefaultExcelBuilder\DefaultStreamExcelBuilder\Excel模板下拉列表支持;
  • 新增DefaultExcelBuilder\DefaultStreamExcelBuilder\Excel模板超链接支持;
  • 新增DefaultExcelBuilder\DefaultStreamExcelBuilder自定义样式支持;
  • 新增DefaultExcelBuilder\DefaultStreamExcelBuilder金额格式化支持;
  • 新增DefaultExcelBuilder、DefaultStreamExcelBuilder简单映射支持;
  • 新增DefaultExcelBuilder动态Map导出自定义宽度支持;
  • 新增各个Excel构建器closeable支持,异常情况下try-with-resource主动关闭相关资源;
  • 优化AttachmentExportUtil导出content-type,明确类型;
  • 其他数据结构、内存优化;
  • 使用文档完善;

因涉及较多的Bug修复,建议所有使用用户进行升级!!!

2.8.2版本是2.x最后一版,后续将进入3.x版本,在此期间会进行核心代码重构以及性能大提升,也会伴随其他新特性,敬请期待!!!

新特性展示如下:

1. DefaultExcelBuilder\DefaultStreamExcelBuilder非连续多表头

// 导出逻辑
Workbook workbook = DefaultExcelBuilder.of(ArtCrowd.class).fixedTitles().build(dataList);
AttachmentExportUtil.export(workbook, "艺术生信息", response);


// ArtCrowd类导出部分字段
@ExcelColumn(order = 0, title = "扩展信息->姓名")
private String name;

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

@ExcelColumn(order = 2, title = "扩展信息->性别", mapping = "Man:男,Woman:女")
private String gender;

2. DefaultExcelBuilder\DefaultStreamExcelBuilder金额格式化(默认四舍五入)

@ExcelColumn(title = "金额",decimalFormat = "##,##0.00")
private BigDecimal money = new BigDecimal(12345.6454);

3. .csv文件生成

Csv csv = CsvBuilder.of(ArtCrowd.class).build(getDataList());
AttachmentExportUtil.export(csv.getFilePath(), "123.csv", response);

private List<ArtCrowd> getDataList() {
}

csv文件生成目前只支持Bean方式,具体使用方式与DefaultExcelBuilder一致。

4. csv文件读取

// csv文件获取
URL htmlToExcelEampleURL = this.getClass().getResource("/templates/read_example.csv");
Path path = Paths.get(htmlToExcelEampleURL.toURI());
// csv文件读取,支持流方式
List<ArtCrowd> result = SaxExcelReader.of(ArtCrowd.class).beanFilter(bean -> bean.isDance()).rowFilter(row -> row.getRowNum() > 0).read(path.toFile());

5. 自定义样式支持

@ExcelColumn(title = "金额",decimalFormat = "##,##0.00",style = "color:green;")
private BigDecimal money = new BigDecimal(12345.6454);

6. 下拉列表支持(字段类型为List,则默认为下拉列表)

 @ExcelColumn(title = "下拉列表")
 private List<String> opts;

7. 简单映射

@ExcelColumn(title="性别",mapping="0:男,1:女")
Integer gender;

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。