EasyExcel特点
采用一行一行的解析模式,并将一行的解析结果以解析者的模式通知处理
概念
- 整个excel称为 workbook
- 每个 workbook 里面有 sheet
- 每个 sheet 有 行 列 单元格
引入依赖
1 2 3 4 5 6
| <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency>
|
写操作
创建实体类(和excel对应),设置表头和添加的数据字段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class TestWrite { public static void main(String[] args) { String fileName = "C:\\Users\\29392\\Desktop\\test.xlsx"; EasyExcel.write(fileName,User.class) .sheet("写操作") .doWrite(data()); }
private static List<User> data() { List<User> list = new ArrayList<User>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setId(i); user.setName("张三"+i); list.add(user); } return list; } }
|
读操作
1、创建和excel对应的实体类,设置对应关系
2、创建监听器,进行一行一行地解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class ExcelListener extends AnalysisEventListener<User> { List<User> list = new ArrayList<User>(); @Override public void invoke(User user, AnalysisContext analysisContext) { System.out.println(user); list.add(user); } @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("表头信息:"+headMap); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }
|
3、最后调用EasyExcel读方法实现操作
1 2 3 4 5 6 7
| public class TestRead { public static void main(String[] args) throws Exception { String fileName = "C:\\Users\\29392\\Desktop\\test.xlsx"; EasyExcel.read(fileName,User.class, new ExcelListener()).sheet().doRead(); } }
|