EasyExcel(读取操作和添补操作)

打印 上一主题 下一主题

主题 996|帖子 996|积分 2988

1.预备Read.xlsx(具有两个sheet)


2.读取第一个sheet中的数据

1.模板

  1. @NoArgsConstructor
  2. @AllArgsConstructor
  3. @Data
  4. @Builder
  5. public static class DemoData {
  6.     // 根据Excel中指定列名或列的索引读取
  7.     @ExcelProperty(value = "字符串标题")
  8.     private String name;
  9.     @ExcelProperty(value = "日期标题")
  10.     private Date hireDate;
  11.     @ExcelProperty(value = "数字标题")
  12.     private Double salary;
  13. }
复制代码
2.方法

  1. /**
  2. * 读取第一个sheet中的数据
  3. */
  4. @Test
  5. public void testRead01() {
  6.     // 读取文件路径
  7.     String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
  8.     // 存储解析的数据
  9.     List<DemoData> demoDataArrayList = new ArrayList<>();
  10.     // 1.创建read
  11.     ExcelReader excelReader = EasyExcel.read(fileName)
  12.             .build();
  13.     // 2.创建sheet
  14.     ReadSheet sheetOne = EasyExcel.readSheet(0)
  15.             .head(DemoData.class)
  16.             .registerReadListener(new AnalysisEventListener<DemoData>() {
  17.                 @Override
  18.                 public void invoke(DemoData demoData, AnalysisContext analysisContext) {
  19.                     demoDataArrayList.add(demoData);
  20.                 }
  21.                 @Override
  22.                 public void doAfterAllAnalysed(AnalysisContext analysisContext) {
  23.                     System.out.println("解析完成一个sheet...");
  24.                 }
  25.             })
  26.             .build();
  27.     // 参数为可变参数,可以读取多个sheet
  28.     excelReader.read(sheetOne);
  29.     // 必须关闭流,否则会出现内存泄漏
  30.     excelReader.finish();
  31.     // 输出所有解析的数据
  32.     System.out.println("所有解析的数据为:");
  33.     demoDataArrayList.forEach(System.out::println);
  34. }
复制代码
3.结果


3.读取全部sheet中的数据

1.模板

  1. @NoArgsConstructor
  2. @AllArgsConstructor
  3. @Data
  4. @Builder
  5. public static class DemoData {
  6.     // 根据Excel中指定列名或列的索引读取
  7.     @ExcelProperty(value = "字符串标题")
  8.     private String name;
  9.     @ExcelProperty(value = "日期标题")
  10.     private Date hireDate;
  11.     @ExcelProperty(value = "数字标题")
  12.     private Double salary;
  13. }
复制代码
2.方法

  1. /**
  2. * 读取所有sheet中的数据
  3. */
  4. @Test
  5. public void testRead02() {
  6.     // 读取文件路径
  7.     String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
  8.     // 存储解析的数据
  9.     List<DemoData> demoDataArrayList = new ArrayList<>();
  10.     // 直接使用EasyExcel读取excel
  11.     ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new AnalysisEventListener<DemoData>() {
  12.         // 每解析一行数据,该方法会被调用一次
  13.         @Override
  14.         public void invoke(DemoData demoData, AnalysisContext analysisContext) {
  15.             demoDataArrayList.add(demoData);
  16.         }
  17.         // 解析完成一个sheet后被调用
  18.         @Override
  19.         public void doAfterAllAnalysed(AnalysisContext analysisContext) {
  20.             System.out.println("解析完成一个sheet...");
  21.             // 可以将解析的数据保存到数据库
  22.         }
  23.     }).build();
  24.     excelReader.readAll(); // 读所有sheet
  25.     // 必须关闭流,否则会出现内存泄漏
  26.     excelReader.finish();
  27.     // 输出所有解析的数据
  28.     System.out.println("所有解析的数据为:");
  29.     demoDataArrayList.forEach(System.out::println);
  30. }
复制代码
3.结果


EasyExcel添补

1.简单添补

1.预备 Fill01.xlsx


2.无模版

3.方法

  1. /**
  2. * 简单填充
  3. */
  4. @Test
  5. public void testFill01() {
  6.     // 选择要填充的模板
  7.     String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01.xlsx";
  8.     // 选择填充后的文件
  9.     String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01_end.xlsx";
  10.     // 1.创建write
  11.     ExcelWriter excelWriter = EasyExcel.write(filledFileName)
  12.             .withTemplate(templateFileName)
  13.             .build();
  14.     // 2.创建sheet
  15.     WriteSheet writeSheet = EasyExcel.writerSheet()
  16.             .sheetNo(0)
  17.             .build();
  18.     // 3.构建数据
  19.     Map<String, Object> data = new HashMap<>();
  20.     data.put("name", "张三");
  21.     data.put("age", 20);
  22.     data.put("birthday", new Date());
  23.     // 4.填充数据
  24.     excelWriter.fill(data, writeSheet);
  25.     // 5.关闭流
  26.     excelWriter.finish();
  27. }
复制代码
4.结果


2.列表添补

1.预备 Fill02.xlsx


2.模板

  1.     @Data
  2.     @Builder
  3.     @NoArgsConstructor
  4.     @AllArgsConstructor
  5.     public static class Fill02 {
  6.         private String name;
  7.         private Double number;
  8.     }
复制代码
3.方法

  1.     /**
  2.      * 列表填充
  3.      */
  4.     @Test
  5.     public void testFill02() {
  6.         // 选择要填充的模板
  7.         String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02.xlsx";
  8.         // 选择填充后的文件
  9.         String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02_end.xlsx";
  10.         // 1.创建write
  11.         ExcelWriter excelWriter = EasyExcel.write(filledFileName)
  12.                 .withTemplate(templateFileName)
  13.                 .build();
  14.         // 2.创建sheet
  15.         WriteSheet writeSheet = EasyExcel.writerSheet()
  16.                 .sheetNo(0)
  17.                 .build();
  18.         // 3.构建数据
  19.         List<Fill02> data = new ArrayList<>();
  20.         data.add(Fill02.builder()
  21.                 .name("张三")
  22.                 .number(100.0)
  23.                 .build());
  24.         data.add(Fill02.builder()
  25.                 .name("李四")
  26.                 .number(200.0)
  27.                 .build());
  28.         data.add(Fill02.builder()
  29.                 .name("王五")
  30.                 .number(300.0)
  31.                 .build());
  32.         // 4.填充数据
  33.         excelWriter.fill(data, writeSheet);
  34.         // 5.关闭流
  35.         excelWriter.finish();
  36.     }
复制代码
4.结果


3.组合添补

1.预备 Fill03.xlsx


2.模板

  1.     @Data
  2.     @Builder
  3.     @NoArgsConstructor
  4.     @AllArgsConstructor
  5.     public static class Fill03 {
  6.         private String name;
  7.         private Integer age;
  8.     }
复制代码
3.方法

  1. /**
  2. * 组合填充
  3. */
  4. @Test
  5. public void testFill03() {
  6.     // 选择要填充的模板
  7.     String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03.xlsx";
  8.     // 选择填充后的文件
  9.     String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03_end.xlsx";
  10.     // 1.创建write
  11.     ExcelWriter excelWriter = EasyExcel.write(filledFileName)
  12.             .withTemplate(templateFileName)
  13.             .build();
  14.     // 2.创建sheet
  15.     WriteSheet writeSheet = EasyExcel.writerSheet()
  16.             .sheetNo(0)
  17.             .build();
  18.     // 3.构建数据
  19.     // 3.1 构建数据1
  20.     Map<String, Object> data1 = new HashMap<>();
  21.     data1.put("time", new Date());
  22.     data1.put("num", 2);
  23.     // 3.2 构建数据2
  24.     List<Fill03> data2 = new ArrayList<>();
  25.     data2.add(Fill03.builder().name("张三").age(20).build());
  26.     data2.add(Fill03.builder().name("李四").age(21).build());
  27.     // 填充配置,换行填充(混合填充必备配置)
  28.     FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
  29.     // 4.填充数据
  30.     excelWriter.fill(data1, fillConfig, writeSheet);
  31.     excelWriter.fill(data2, fillConfig, writeSheet);
  32.     // 5.关闭流
  33.     excelWriter.finish();
  34. }
复制代码
4.结果


4.程度添补

1.预备 Fill04.xlsx


2.模板

  1. @Data
  2. @Builder
  3. @NoArgsConstructor
  4. @AllArgsConstructor
  5. public static class Fill04 {
  6.     private String name;
  7.     private Integer age;
  8. }
复制代码
3.方法

  1.     /**
  2.      * 水平填充
  3.      */
  4.     @Test
  5.     public void testFill04() {
  6.         // 选择要填充的模板
  7.         String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04.xlsx";
  8.         // 选择填充后的文件
  9.         String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04_end.xlsx";
  10.         // 1.创建write
  11.         ExcelWriter excelWriter = EasyExcel.write(filledFileName)
  12.                 .withTemplate(templateFileName)
  13.                 .build();
  14.         // 2.创建sheet
  15.         WriteSheet writeSheet = EasyExcel.writerSheet()
  16.                 .sheetNo(0)
  17.                 .build();
  18.         // 3.构建数据
  19.         List<Fill04> data = new ArrayList<>();
  20.         data.add(Fill04.builder().name("张三").age(20).build());
  21.         data.add(Fill04.builder().name("李四").age(21).build());
  22.         // 填充配置,水平填充
  23.         FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
  24.         // 4.填充数据
  25.         excelWriter.fill(data, fillConfig, writeSheet);
  26.         // 5.关闭流
  27.         excelWriter.finish();
  28.     }
复制代码
4.结果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表