MyExcel,是一个集导入、导出、加密Excel等多项功能的Java工具包。
MyExcel采用声明式语法来构建、读取Excel,屏蔽POI的具体操作细节(对POI无感知),以开发常用的技术替代,使得构建(从简单到高度复杂Excel)以及读取Excel变得极为便利。
如导入:
List
.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
.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文档
关键词: