1.预备Read.xlsx(具有两个sheet)
2.读取第一个sheet中的数据
1.模板
- @NoArgsConstructor
- @AllArgsConstructor
- @Data
- @Builder
- public static class DemoData {
- // 根据Excel中指定列名或列的索引读取
- @ExcelProperty(value = "字符串标题")
- private String name;
- @ExcelProperty(value = "日期标题")
- private Date hireDate;
- @ExcelProperty(value = "数字标题")
- private Double salary;
- }
复制代码 2.方法
- /**
- * 读取第一个sheet中的数据
- */
- @Test
- public void testRead01() {
- // 读取文件路径
- String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
- // 存储解析的数据
- List<DemoData> demoDataArrayList = new ArrayList<>();
- // 1.创建read
- ExcelReader excelReader = EasyExcel.read(fileName)
- .build();
- // 2.创建sheet
- ReadSheet sheetOne = EasyExcel.readSheet(0)
- .head(DemoData.class)
- .registerReadListener(new AnalysisEventListener<DemoData>() {
- @Override
- public void invoke(DemoData demoData, AnalysisContext analysisContext) {
- demoDataArrayList.add(demoData);
- }
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {
- System.out.println("解析完成一个sheet...");
- }
- })
- .build();
- // 参数为可变参数,可以读取多个sheet
- excelReader.read(sheetOne);
- // 必须关闭流,否则会出现内存泄漏
- excelReader.finish();
- // 输出所有解析的数据
- System.out.println("所有解析的数据为:");
- demoDataArrayList.forEach(System.out::println);
- }
复制代码 3.结果
3.读取全部sheet中的数据
1.模板
- @NoArgsConstructor
- @AllArgsConstructor
- @Data
- @Builder
- public static class DemoData {
- // 根据Excel中指定列名或列的索引读取
- @ExcelProperty(value = "字符串标题")
- private String name;
- @ExcelProperty(value = "日期标题")
- private Date hireDate;
- @ExcelProperty(value = "数字标题")
- private Double salary;
- }
复制代码 2.方法
- /**
- * 读取所有sheet中的数据
- */
- @Test
- public void testRead02() {
- // 读取文件路径
- String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
- // 存储解析的数据
- List<DemoData> demoDataArrayList = new ArrayList<>();
- // 直接使用EasyExcel读取excel
- ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new AnalysisEventListener<DemoData>() {
- // 每解析一行数据,该方法会被调用一次
- @Override
- public void invoke(DemoData demoData, AnalysisContext analysisContext) {
- demoDataArrayList.add(demoData);
- }
- // 解析完成一个sheet后被调用
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {
- System.out.println("解析完成一个sheet...");
- // 可以将解析的数据保存到数据库
- }
- }).build();
- excelReader.readAll(); // 读所有sheet
- // 必须关闭流,否则会出现内存泄漏
- excelReader.finish();
- // 输出所有解析的数据
- System.out.println("所有解析的数据为:");
- demoDataArrayList.forEach(System.out::println);
- }
复制代码 3.结果
EasyExcel添补
1.简单添补
1.预备 Fill01.xlsx
2.无模版
3.方法
- /**
- * 简单填充
- */
- @Test
- public void testFill01() {
- // 选择要填充的模板
- String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01.xlsx";
- // 选择填充后的文件
- String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01_end.xlsx";
- // 1.创建write
- ExcelWriter excelWriter = EasyExcel.write(filledFileName)
- .withTemplate(templateFileName)
- .build();
- // 2.创建sheet
- WriteSheet writeSheet = EasyExcel.writerSheet()
- .sheetNo(0)
- .build();
- // 3.构建数据
- Map<String, Object> data = new HashMap<>();
- data.put("name", "张三");
- data.put("age", 20);
- data.put("birthday", new Date());
- // 4.填充数据
- excelWriter.fill(data, writeSheet);
- // 5.关闭流
- excelWriter.finish();
- }
复制代码 4.结果
2.列表添补
1.预备 Fill02.xlsx
2.模板
- @Data
- @Builder
- @NoArgsConstructor
- @AllArgsConstructor
- public static class Fill02 {
- private String name;
- private Double number;
- }
复制代码 3.方法
- /**
- * 列表填充
- */
- @Test
- public void testFill02() {
- // 选择要填充的模板
- String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02.xlsx";
- // 选择填充后的文件
- String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02_end.xlsx";
- // 1.创建write
- ExcelWriter excelWriter = EasyExcel.write(filledFileName)
- .withTemplate(templateFileName)
- .build();
- // 2.创建sheet
- WriteSheet writeSheet = EasyExcel.writerSheet()
- .sheetNo(0)
- .build();
- // 3.构建数据
- List<Fill02> data = new ArrayList<>();
- data.add(Fill02.builder()
- .name("张三")
- .number(100.0)
- .build());
- data.add(Fill02.builder()
- .name("李四")
- .number(200.0)
- .build());
- data.add(Fill02.builder()
- .name("王五")
- .number(300.0)
- .build());
- // 4.填充数据
- excelWriter.fill(data, writeSheet);
- // 5.关闭流
- excelWriter.finish();
- }
复制代码 4.结果
3.组合添补
1.预备 Fill03.xlsx
2.模板
- @Data
- @Builder
- @NoArgsConstructor
- @AllArgsConstructor
- public static class Fill03 {
- private String name;
- private Integer age;
- }
复制代码 3.方法
- /**
- * 组合填充
- */
- @Test
- public void testFill03() {
- // 选择要填充的模板
- String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03.xlsx";
- // 选择填充后的文件
- String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03_end.xlsx";
- // 1.创建write
- ExcelWriter excelWriter = EasyExcel.write(filledFileName)
- .withTemplate(templateFileName)
- .build();
- // 2.创建sheet
- WriteSheet writeSheet = EasyExcel.writerSheet()
- .sheetNo(0)
- .build();
- // 3.构建数据
- // 3.1 构建数据1
- Map<String, Object> data1 = new HashMap<>();
- data1.put("time", new Date());
- data1.put("num", 2);
- // 3.2 构建数据2
- List<Fill03> data2 = new ArrayList<>();
- data2.add(Fill03.builder().name("张三").age(20).build());
- data2.add(Fill03.builder().name("李四").age(21).build());
- // 填充配置,换行填充(混合填充必备配置)
- FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
- // 4.填充数据
- excelWriter.fill(data1, fillConfig, writeSheet);
- excelWriter.fill(data2, fillConfig, writeSheet);
- // 5.关闭流
- excelWriter.finish();
- }
复制代码 4.结果
4.程度添补
1.预备 Fill04.xlsx
2.模板
- @Data
- @Builder
- @NoArgsConstructor
- @AllArgsConstructor
- public static class Fill04 {
- private String name;
- private Integer age;
- }
复制代码 3.方法
- /**
- * 水平填充
- */
- @Test
- public void testFill04() {
- // 选择要填充的模板
- String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04.xlsx";
- // 选择填充后的文件
- String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04_end.xlsx";
- // 1.创建write
- ExcelWriter excelWriter = EasyExcel.write(filledFileName)
- .withTemplate(templateFileName)
- .build();
- // 2.创建sheet
- WriteSheet writeSheet = EasyExcel.writerSheet()
- .sheetNo(0)
- .build();
- // 3.构建数据
- List<Fill04> data = new ArrayList<>();
- data.add(Fill04.builder().name("张三").age(20).build());
- data.add(Fill04.builder().name("李四").age(21).build());
- // 填充配置,水平填充
- FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
- // 4.填充数据
- excelWriter.fill(data, fillConfig, writeSheet);
- // 5.关闭流
- excelWriter.finish();
- }
复制代码 4.结果
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |