java实现excel导入 java批量导入excel数据( 四 )

public static void main(String[] args) throws FileNotFoundException {FileInputStream inputStream = new FileInputStream(new File("/Users/panzhi/Documents/easyexcel-user1.xls"));//初始化一个监听器UserDataListener userDataListener = new UserDataListener();//读取文件数据EasyExcel.read(inputStream, userDataListener).sheet().doRead();System.out.println("表头:" + JSONArray.toJSONString(userDataListener.getHeadList()));System.out.println("数据体:" + JSONArray.toJSONString(userDataListener.getDataList()));}运行程序,输出结果如下:
表头:[{0:"姓名",1:"年龄",2:"操作时间"}]数据体:[{0:"张三0",1:"20",2:"2021-03-28 16:32:40"},{0:"张三1",1:"21",2:"2021-03-28 16:32:40"},{0:"张三2",1:"22",2:"2021-03-28 16:32:40"},{0:"张三3",1:"23",2:"2021-03-28 16:32:40"},{0:"张三4",1:"24",2:"2021-03-28 16:32:40"},{0:"张三5",1:"25",2:"2021-03-28 16:32:40"},{0:"张三6",1:"26",2:"2021-03-28 16:32:40"},{0:"张三7",1:"27",2:"2021-03-28 16:32:40"},{0:"张三8",1:"28",2:"2021-03-28 16:32:40"},{0:"张三9",1:"29",2:"2021-03-28 16:32:40"}]其中key表示列下表!
2.3.3、复杂表头读取在实际的开发中,我们还会遇到复杂表头的数据读取,以如下表头为例,我们应该如何读取呢?

java实现excel导入 java批量导入excel数据


如果你是采用注解的方式导出的文件,同样也可以通过注解方式来读取,例如上文中,我们是使用如下实体类生成的文件,我们也可通过这个类读取文件!
public class UserEntity {@ExcelProperty(value = "https://www.jinnalai.com/fenxiang/班级")private String className;@ExcelProperty({"学生信息", "姓名"})private String name;@ExcelProperty({"学生信息", "年龄"})private int age;@DateTimeFormat("yyyy-MM-dd HH:mm:ss")@ExcelProperty({"学生信息", "入学时间"})private Date time;//set、get}//读取文件List<UserEntity> list = EasyExcel.read(filePath).head(UserEntity.class).sheet().doReadSync();System.out.println(JSONArray.toJSONString(list));读取结果如下:
[{"age":20,"className":"一年级~1班","name":"张三0","time":1618719961000},{"age":21,"className":"一年级~1班","name":"张三1","time":1618719961000},{"age":22,"className":"一年级~1班","name":"张三2","time":1618719961000},{"age":23,"className":"一年级~1班","name":"张三3","time":1618719961000},{"age":24,"className":"一年级~1班","name":"张三4","time":1618719961000},{"age":25,"className":"一年级~1班","name":"张三5","time":1618719961000},{"age":26,"className":"一年级~1班","name":"张三6","time":1618719961000},{"age":27,"className":"一年级~1班","name":"张三7","time":1618719961000},{"age":28,"className":"一年级~1班","name":"张三8","time":1618719961000},{"age":29,"className":"一年级~1班","name":"张三9","time":1618719961000}]如果你是使用动态参数化来生成文件,那么这个时候可以采用动态监听器的方式来读取文件,在读取的时候需要指定数据所在行,示例代码如下:
public static void main(String[] args) throws FileNotFoundException {FileInputStream inputStream = new FileInputStream(new File("/Users/panzhi/Documents/easyexcel-export-user4.xlsx"));//初始化一个监听器UserDataListener userDataListener = new UserDataListener();//读取文件数据,指定数据所在行使用headRowNumber方法EasyExcel.read(inputStream, userDataListener).sheet().headRowNumber(2).doRead();System.out.println("表头:" + JSONArray.toJSONString(userDataListener.getHeadList()));System.out.println("数据体:" + JSONArray.toJSONString(userDataListener.getDataList()));}读取结果如下:
表头:[{0:"班级",1:"学生信息",2:"学生信息",3:"学生信息"},{0:"班级",1:"姓名",2:"年龄",3:"入学时间"}]数据体:[{0:"一年级~1班",1:"张三0",2:"20",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三1",2:"21",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三2",2:"22",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三3",2:"23",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三4",2:"24",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三5",2:"25",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三6",2:"26",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三7",2:"27",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三8",2:"28",3:"2021-04-18 12:26:01"},{0:"一年级~1班",1:"张三9",2:"29",3:"2021-04-18 12:26:01"}]

推荐阅读