Excel映射到实体-easyexcel工具

项目需要把Excel进行解析,并映射到对象属性,实现类似Mybatis的ORM的效果。使用的方式是自定义注解+POI,这种方式代码复杂而且不易于维护。
easyexcel是阿里巴巴开源的一个框架,解决了字段映射问题、OOM问题、使用复杂问题等,总之是一个很方便的工具
GitHub链接

使用 添加依赖 <!--添加maven依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.3</version> </dependency> 准备excel

Excel映射到实体-easyexcel工具

准备实体 @Data public class Student { /** * 也可以使用@ExcelProperty(index = 2) 指定列数 * 官方不建议 index 和 name 同时用,要么一个对象只用index,要么一个对象只用name去匹配 */ @ExcelProperty("姓名") private String name; @ExcelProperty("学号") private String stuId; @ExcelProperty("班级") private String classId; } 创建监听器 public class DemoDataListener extends AnalysisEventListener<Student> { private List<Student> list = new LinkedList<Student>(); /** * 这个每一条数据解析都会来调用 * @param student * @param analysisContext */ public void invoke(Student student, AnalysisContext analysisContext) { System.out.println("读取到一条数据 " + JSON.toJSONString(student)); list.add(student); } /** * 所有数据读取完了调用 * @param analysisContext */ public void doAfterAllAnalysed(AnalysisContext analysisContext) { System.out.println("读取完毕 所有数据 " + JSON.toJSONString(list)); } } 读取 public class Main { public static void main(String[] args) { String fileName = "D:\\1.xlsx"; ExcelReader excelReader = EasyExcel.read(fileName, Student.class, new DemoDataListener()).build(); ReadSheet readSheet = EasyExcel.readSheet(0).build(); excelReader.read(readSheet); // 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的 excelReader.finish(); } } 结果

Excel映射到实体-easyexcel工具

其他问题

如果第一行不是表头,而是像一下数据怎么办呢

Excel映射到实体-easyexcel工具


很简单只需要设置readSheet的headRowNumber即可

public class Main { public static void main(String[] args) { String fileName = "D:\\1.xlsx"; ExcelReader excelReader = EasyExcel.read(fileName, Student.class, new DemoDataListener()).build(); ReadSheet readSheet = EasyExcel.readSheet(0).headRowNumber(2).build(); excelReader.read(readSheet); // 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的 excelReader.finish(); } }

其他负责表格请参考
官网文档

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjywj.html