读取excel等文件根据注解自动装填为实体类

问题:以前每次读取excel 都是根据第几列来装填实体类里面的属性。写起来很麻烦。还要判断。

思路:

1.因为每次读取excel 或者word表格 都能得到是第几列的数据,那么可以知道每列数据的index。

2.把每个列的index作为key,数据内容作为value变成一个属性值,

3.通过fastJson 的JSONObject 作为一个对象,JSONArray 作为这些对象的容器。

4.在实体类上用fastJSon 的注解@JSONFIELD(name="第几列")  0---nIndex  作为转换的依据。 注意这里最好额外写出一个实体类,用来专门作为接收的实体类。避免别的地方接收时转换的错误。

伪代码:

装填数据:

JSONArray array = new JSONArray();

  while(iterator.hasNext()){

    JSONObject ob = new JSONObject();

    for(int i = 0 ; i < row.getcells();i++)
    {

    ob.put(String.valueOf(i),row.getCell(i).text().trim());

    }

  array.add(ob);

  }

实体类:

class Student

{

  @JSONField(name="0")

  private String name;

  @JSONField(name="1")

  private String age;

  @JSONField(name="2")

  private String sex;

}

转换:

main{

   JSONArray array = JSONUtils.covertJSON();

    List<Student> list = JSON.parseArray(array.tostring(),Student.class);

}

至此一个大致的过程就出来了。emmm 想了一下这个应该是半自动装填模式。

如果需要全自动装填。可以使用反射获取实体类里面的属性,然后根据上到下的index来设置。这种方式需要设置安全性问题。

posted @ 2021-01-19 10:27  沙师弟demo  阅读(255)  评论(0编辑  收藏  举报