前提条件:因为要实现动态解析,动态设置值,那么我们在反射执行set操作的时候就需要知道相应的setMethod(),那么我们可以在Excel规定第一行就是属性字段,并且字段名称跟bean的名称一样,读取的时候先把第一行的数据放在一个String []数组中。具体实现请参照以下源码。我已经把相关代码打包成Jar,需要的朋友可以自行下载;Jar包下载链接:https://pan.baidu.com/s/1fKCCh54S3ZtHfv66T2pk2w 密码:nur8
使用方法:新建bean用于存储Excel数据信息,每个属性需要有get、set操作,属性与Excel首行相同,最重要的一点是要实现Clonesble接口重写clone方法。在new ReadExcelUtil 的时候只需要将对象类型与Excel文件路径传入构造函数即可,然后调用 ReadExcelUtil的getObjectList即可得到解析后的所有对象。至于这个对象你可以用任何的对象,你可以换成Teacher、OrderInfo、UserInfo......但是前面提到的:Excel第一行的属性字段需要与bean的属性字段一致,否则无法调用目标方法,具体可参见ReflectionInitValue的方法。具体实现请参见:文章末尾的Test类测试。
源码分析
前提条件:引入Apache POI 的Maven仓库坐标,我这里使用的是3.25版本的。
1 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
2 <dependency>
3
<groupId>org.apache.poi</groupId>
4
<artifactId>poi</artifactId>
5
<version>3.15</version>
6 </dependency>
7 <dependency>
8
<groupId>org.apache.poi</groupId>
9
<artifactId>poi-ooxml</artifactId>
10
<version>3.15</version>
11 </dependency>