当前位置: 软件>java软件
填充Excel列表工具 Excel2Entity
本文导语: 该类库(Excel2Entity, 简称e2e)对POI对xls文件的读取进行了封装,实现了批量导入Excel中的数据时自动将数据填充到实体列表的功能, 支持字段类型校验以及自定义校验规则,可以对Excel中的数据类型合法性进行校验,同时e2e提...
该类库(Excel2Entity, 简称e2e)对POI对xls文件的读取进行了封装,实现了批量导入Excel中的数据时自动将数据填充到实体列表的功能, 支持字段类型校验以及自定义校验规则,可以对Excel中的数据类型合法性进行校验,同时e2e提供了一定的扩展性,可以自定义校验规则以及自定义实体对象字段类型实现更加负责的校验以及字段类型填充。
- Excel2Entity依赖于Apache POI类库。
- 项目基于Maven。
- 项目托管在Github。
使用方法:
1. 普通实体创建
ExcelHelper eh = ExcelHelper.readExcel("111.xls"); List entitys = null; try { entitys = eh.toEntitys(Demo.class); for (Demo d : entitys) { System.out.println(d.toString()); } } catch (ExcelParseException e) { System.out.println(e.getMessage()); } catch (ExcelContentInvalidException e) { System.out.println(e.getMessage()); } catch (ExcelRegexpValidFailedException e) { System.out.println(e.getMessage()); }
2. 注册新的字段类型
注册的新的字段类型类必须实现ExcelType抽象类。
ExcelHelper.registerNewType(MyDataType.class);
3. 实体对象
实体类必须标注@ExcelEntity注解, 同时需要填充的字段标注@ExcelProperty注解
@ExcelEntity public class Demo { @ExcelProperty(value="Name", rule=MyStringCheckRule.class) private String name; @ExcelProperty("Sex") private String sex; // 基于正则表达式的字段校验 @ExcelProperty(value="Age", regexp="^[1-4]{1}[0-9]{1}$", regexpErrorMessage="年龄必须在10-49岁之间") private int age; @ExcelProperty(value="Tel") private Long tel; @ExcelProperty("创建时间") private Timestamp createDate; @ExcelProperty(value="Name", required=true) private MyDataType name2; ... [get/set方法] }
4. 自定义校验规则
自定义校验规则必须实现ExcelRule接口
public class MyStringCheckRule implements ExcelRule { // 字段检查 public void check(Object value, String columnName, String fieldName) throws ExcelContentInvalidException { String val = (String) value; System.out.println("--------> 检测的列名为 " + columnName + ", 填充的字段名为 " + fieldName ); if(val.length() > 10){ throw new ExcelContentInvalidException("内容超长!"); } } // 结果修改 public String filter(Object value, String columnName, String fieldName) { String val = (String) value; return "[[[[" + val + "]]]"; } }