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

MyExcel采用声明式语法来构建、读取Excel,屏蔽POI的具体操作细节(对POI无感知),以开发常用的技术替代,使得构建(从简单到高度复杂Excel)以及读取Excel变得极为便利。

如导入:

List result = SaxExcelReader.of(ArtCrowd.class)

.sheet(0) // 0代表第一个,如果为0,可省略该操作,也可sheet("名称")读取

.rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行

.beanFilter(ArtCrowd::isDance) // bean过滤

.read(path.toFile());//

另外,MyExcel一直在实际生产环境中使用,每天导出、读取Excel接近上亿数据,内存占用、抖动极低,足够应对绝大部分应用场景。

本次主要是对BUG修复以及规范增强,更新点如下:

1.修复子类属性覆盖父类属性BUG;

2.DefaultExcelBuilder、DefaultStreamExcelBuilder强类型检查,避免append错误数据;

DefaultStreamExcelBuilder streamExcelBuilder = DefaultStreamExcelBuilder

.of(ArtCrowd.class) // 如导出Map类型数据,请使用of(Map.class)

.threadPool(Executors.newFixedThreadPool(10))// 线程池,可选

.capacity(10_000)// 容量设定,在主动划分excel使用,可选

.start();

streamExcelBuilder.append(data);

3.时间类采用Excel自身格式化;

4.统一@ExcelColumn中decimalFormat、dateFormatPattern为format,精简配置项;

@ExcelColumn(title="时间",format="yyyy-MM-dd HH:ss")

Date time;

5.完善异常提示时信息-如异常文件名称、字段等,方便查找错误信息;

6.修正错误的方法名称-cancle;

7.支持DefaultExcelBuilder、DefaultStreamExcelBuilder动态全局样式设置-globalStyle;

DefaultExcelBuilder.of(ArtCrowd.class)

.globalStyle("title->background-color:red")

.build(dataList);

8.支持@ExcelColumn中mapping反向读取;

@ExcelColumn(title="是否会跳舞",mapping="true:是,false:否")

Boolean isDance;

9.规范方法名称-sheet()(单一sheet)、sheets()(多sheet);

// 单个sheet读取

SaxExcelReader.of(ArtCrowd.class).sheet(0).read(excelFile);

// 多个sheet读取

SaxExcelReader.of(ArtCrowd.class).sheets(0,1).read(excelFile);

10.公式写入主动去除“=”号;

11.过期DefaultExcelBuilder、DefaultStreamExcelBuilder getInstance方法,使用of方法代替;

DefaultExcelBuilder.of(Map.class).build(mapList);

具体请参见文档:myexcel文档

关键词: