当前位置:  软件>java软件

填充Excel列表工具 Excel2Entity

    来源:    发布时间:2015-01-10

    本文导语:  该类库(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 + "]]]";
    }
 
}

 

 


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 fill():控制默认填充字符
  • 如何把Object的各类型的数据成员填充到byte缓冲区
  • 怎样实现利用fprintf,输出定长字串,位数不足时在左侧填入指定字符填充。。
  • 被TCP协议填充了1000个字节,为什么?
  • 怎么实现,让图片填充整个按钮区域吗?
  • 如何在java applet(j2me)里填充多边形?望高手指教!!!
  • 请问用QT如何填充区域,我想画一个带洞的多边形,洞不覆盖其他图行,怎么半?
  • GNU汇编fill填充一个数据结构使得另一个数据结构全部清零
  • php图片背景填充实例
  • SQL Server误区30日谈 第25天 有关填充因子的误区
  • 根据ID填充文本框的实例代码
  • ThinkPHP自动填充实现无限级分类的方法
  • java填充相同字符的方法?
  • jquery自动填充勾选框即把勾选框打上true
  • php缩略图填充白边的示例代码
  • 基于Android中的 AutoCompleteTextView实现自动填充
  • php生成缩略图填充白边(等比缩略图方案)
  • 根据灰度值填充字符-单文件单线程版
  • PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
  • 通过T_sql语句向其中一次填入一条数据或一次填入多条数据的方式填充数据
  • 【求助】怎么填充一个sk_buffer,发送一个UDP包?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3