当前位置:   article > 正文

EasyExcel 基本使用、通俗易懂①_@excelproperty(value = "", index = 0)

@excelproperty(value = "", index = 0)

目录

一、EasyExcel介绍

二、EasyExcel特点

三、Excel基本术语介绍

四、EasyExcel写操作

(1)引入依赖

(2)创建实体类和设置表头

(3)实现最终的添加操作

五、EasyExcel读操作

(1)设置列对应的属性关系

(2)创建读取操作的监听类 AnalysisEventListener

(3)调用方法,实现最终的读取

六、总结

读操作:

写操作:


一、EasyExcel介绍

        EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。

二、EasyExcel特点

  • Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。

  • EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)

  • EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。

 三、Excel基本术语介绍

1、整个excel称为:workbook

2、每个workbook里面有很多sheet

3、每个sheet有行、列、单元格

 话不多说,上代码!

四、EasyExcel写操作

(1)引入依赖

        pom中引入xml相关依赖

  1. <dependencies>
  2. <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
  3. <dependency>
  4. <groupId>com.alibaba</groupId>
  5. <artifactId>easyexcel</artifactId>
  6. <version>2.1.1</version>
  7. </dependency>
  8. </dependencies>

(2)创建实体类和设置表头

        设置表头和添加数据字段

        当然这里的属性可以设置多个,为了简单理解我就使用两个属性。

        设置表头信息用到了 @ExcelProperty(value = "用户编号") 注解

        @ExcelProperty:用来设置表头信息,里面的value为表头文字

  1. public class User {
  2. //设置表头名称
  3. @ExcelProperty(value = "用户编号")
  4. private int id;
  5. //设置表头名称
  6. @ExcelProperty(value = "用户名称")
  7. private String name;
  8. public User() { }
  9. public User(int id, String name) {
  10. this.id = id;
  11. this.name = name;
  12. }
  13. public int getId() { return id; }
  14. public void setId(int id) { this.id = id; }
  15. public String getName() { return name; }
  16. public void setName(String name) { this.name = name; }
  17. @Override
  18. public String toString() {
  19. return "User{" +
  20. "id=" + id +
  21. ", name='" + name + '\'' +
  22. '}';
  23. }
  24. }

(3)实现最终的添加操作

  1. public static void main(String[] args) {
  2. //模拟用户数据
  3. List<User> users = new ArrayList<>();
  4. users.add(new User(1,"张三"));
  5. users.add(new User(2,"李四"));
  6. users.add(new User(3,"王五"));
  7. //设置文件输出的位置和名称(指定Excel文件的生成位置)
  8. //这里的 .xlsx 后缀名是excel文件的后缀名
  9. String filename = "D:\\test01.xlsx";
  10. //调用方法 这里 需要指定写用哪个class去写,
  11. EasyExcel.write(filename,User.class) //这步执行之后就相当于创建了一个workbook整个表格
  12. .sheet("用户列表") //创建一个名为 用户列表 的sheet,
  13. .doWrite(users); // 往sheet写入数据,这里的参数是一个集合
  14. }

运行main方法,之后提示我们说 完成写操作 Finished write.

接着到我们的D盘查看,就有了我们刚刚指定生成的test01.xlsx文件了,接下来让我们打开看看八

 这里我们就 完成 了EasyExcel的写操作啦

五、EasyExcel读操作

(1)设置列对应的属性关系

     基于上面创建的User实体类进行修改,在@ExcelProperty注解中新添加 index 参数,

index = 0:表示对应excel表格的第一列。1对应第二列

  1. public class User {
  2. //设置表头名称
  3. //设置列对应的属性
  4. @ExcelProperty(value = "用户编号",index = 0)
  5. private int id;
  6. //设置表头名称
  7. //设置列对应的属性
  8. @ExcelProperty(value = "用户名称",index = 1)
  9. private String name;
  10. }

(2)创建读取操作的监听类 AnalysisEventListener<T>

        这个监听类EasyExcel已经帮我封装了,我们只需要继承就可以。这里的泛型是表格对应的实体类(也就是我们创建的User)

  1. import com.alibaba.excel.context.AnalysisContext;
  2. import com.alibaba.excel.event.AnalysisEventListener;
  3. import java.util.Map;
  4. //这里要继承AnalysisEventListener<T> 加上泛型User(我们自己创建的User)
  5. //实现两个方法
  6. public class ExcelListener extends AnalysisEventListener<User> {
  7. // 一行一行去读取excel内容,把每行的内容封装到User对象
  8. // 注意:这里会从excel第二行开始读取,因为它认为第一行是表头,不读第一行
  9. @Override
  10. public void invoke(User user, AnalysisContext analysisContext) {
  11. //这里我们把user输出,得到每行内容
  12. System.out.println(user);
  13. }
  14. // 这个方法需要自己手动重写 (也是AnalysisEventListener中的方法)
  15. // 读取表头内容 Map<Integer, String> headMap 这个map就是表头的内容
  16. @Override
  17. public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
  18. System.out.println("表头:" + headMap);
  19. }
  20. //所有操作之后,这个方法会执行 (目前用不到)
  21. @Override
  22. public void doAfterAllAnalysed(AnalysisContext analysisContext) {
  23. }
  24. }

(3)调用方法,实现最终的读取

        读的过程中会自动调用监听器里面的方法,一行一行读取,咱这里面可以读到每行中的内容,封装到User对象中。

  1. public static void main(String[] args) {
  2. //要读取的excel文件位置
  3. String filename = "D:\\test01.xlsx";
  4. // 这里需要传入三个参数:被读取的文件位置、用哪个class去读去、监听器对象(咱们自己创建的那个)
  5. EasyExcel.read(filename, User.class, new ExcelListener())
  6. .sheet() //默认读取第一个sheet,
  7. .doRead(); //完成读,读取结束后文件流会自动关闭
  8. }

运行run方法,查看读取结果 

以上就是咱们完成EasyExcel的读和写操作。这里我们简单的做个小总结:

六、总结

读操作:

        1、引入依赖

        2、创建和excel对饮的实体类,设置excel表头

        3、调用EasyExcel方法实现写操作

写操作:

        1、引入依赖

        2、创建和excel对饮的实体类,设置对应关系

        3、创建监听器进行一行一行解析过程(创建类,继承类,封装解析方法)

        4、调用EasyExcel方法实现读操作

HZJ,一个在学习路上匍匐前行的小菜鸟...

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/算法编织者2/article/detail/61119
推荐阅读
相关标签
  

闽ICP备14008679号