热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EasyExcel的基本使用

官方网址:https:www.yuque.comeasyexceldoceasyexcel应用场景数据导入:减少录入工作量数据导出:统计信息归档数据传输:异构系

EasyExcel的基本使用

  • 官方网址:https://www.yuque.com/easyexcel/doc/easyexcel
  • 应用场景
    • 数据导入:减少录入工作量
    • 数据导出:统计信息归档
    • 数据传输:异构系统之间数据传输
  • EasyExcel特点
    • 它是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大量减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘中一行行读取数据,逐个解析。
    • EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)
  • EasyExcel写操作
    • 导入依赖的版本对应关系(版本慎重选择,否则发生冲突)
      
          com.alibaba
          easyexcel
          2.1.1
      
      
      
      
          org.apache.poi
          poi
          3.17
      
      
      
          org.apache.poi
          poi-ooxml
          3.17
      
      
    • 创建一个与excel表格字段相对应的实体类(字段==属性)
      package com.xsha.demo.excel;
      
      import com.alibaba.excel.annotation.ExcelProperty;
      import lombok.Data;
      
      @Data
      public class MyData {
          // 设置excel表表头
          @ExcelProperty(value = "学生编号")
          private String sno;
      
          @ExcelProperty(value = "学生姓名")
          private String sname;
      }
      
    • 代码测试
        // 实现EasyExcel写操作
        @Test
        public void writeExcel() {
            // 1.设置写入文件夹地址和excel文件名称
            String filename = "D:\xusha\SpringProjects\guli_parent\service\service_education\src\test\java\com\xsha\demo\excel\files\write.xlsx";
            // 2.准备数据集
            List list = new ArrayList<>();
            for (int i = 0; i <5; i++) {
                MyData data = new MyData();
                data.setSno(i);
                data.setSname("xiansen"+i);
                list.add(data);
            }
            // 3.调用EasyExcel里面的方法实现写的操作,第一个参数是文件路径,第二个参数是实体类名称
            EasyExcel.write(filename, MyData.class).sheet("学生列表").doWrite(list);
        }  
      
  • EasyExcel读操作
    • 导入的依赖及版本控制是一样的
    • 创建的实体类也是excel表格字段一致,只不过在注解中增加一个属性,指定表格的第几个字段(从0开始)
      package com.xsha.demo.excel;
      
      import com.alibaba.excel.annotation.ExcelProperty;
      import lombok.Data;
      
      @Data
      public class MyData {
      
          // 设置excel表表头
          @ExcelProperty(value = "学生编号", index = 0)
          private Integer sno;
      
          @ExcelProperty(value = "学生姓名", index = 1)
          private String sname;
      }
      
      
    • 创建一个“监听器”进行excel表的读取(结构较为固定,内容根据需求变动)
      package com.xsha.demo.excel;
      
      import com.alibaba.excel.context.AnalysisContext;
      import com.alibaba.excel.event.AnalysisEventListener;
      
      import java.util.Map;
      
      public class ExcelListener extends AnalysisEventListener {
          // 逐行读取excel表格的内容
          @Override
          public void invoke(MyData data, AnalysisContext analysisContext) {
              System.out.println(data.getSno()+"-----"+data.getSname());
          }
          
          // 读取表头的内容
          @Override
          public void invokeHeadMap(Map headMap, AnalysisContext context) {
              System.out.println("表头:"+headMap);
          }
          
          // 读取完成之后
          @Override
          public void doAfterAllAnalysed(AnalysisContext analysisContext) {
          
          }
      }  
      
    • 代码测试
      // 实现EasyExcel读操作
      @Test
      public void readExcel() {
          // 1.设置读取文件夹地址和excel文件名称
          String filename = "D:\xusha\SpringProjects\guli_parent\service\service_education\src\test\java\com\xsha\demo\excel\files\write.xlsx";
          // 3.调用EasyExcel里面的方法实现读的操作,第一个参数是文件路径,第二个参数是实体类名称,第三个参数是监听器
          EasyExcel.read(filename, MyData.class, new ExcelListener()).sheet("学生列表").doRead();
      }
      

推荐阅读
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
author-avatar
zavier
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有