热门标签 | 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();
      }
      

推荐阅读
  • 本文详细介绍了ASP.NET缓存的基本概念和使用方法,包括输出缓存、数据缓存及其高级特性,如缓存依赖、自定义缓存和缓存配置文件等。通过合理利用这些缓存技术,可以显著提升Web应用程序的性能。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • 构建首个Spring MVC应用程序
    本指南将指导您如何从零开始创建一个简单的Spring MVC应用,涵盖项目模块创建、依赖管理、核心配置及控制器开发等关键步骤。 ... [详细]
  • Gradle复合构建详解
    自Gradle 3.3起,复合构建功能得以实现,这是一种能够整合其他独立构建的高级构建模式。本文将详细介绍复合构建与多项目构建的区别,以及如何在实际项目中应用复合构建。 ... [详细]
  • 在Android应用开发过程中,经常需要在SQLite数据库中快速插入大量数据。本文通过实例探讨了不同插入方法的效率,并提供了优化建议。 ... [详细]
  • 本文详细介绍了如何在Spring Boot项目中配置Maven的pom.xml文件,包括项目的基本信息、依赖管理及构建插件的设置。 ... [详细]
  • Spring Boot + MyBatis Plus 实现SQL语句打印的两种方法
    本文详细介绍了如何在Spring Boot和MyBatis Plus环境中实现SQL语句打印的两种方法,包括配置文件设置和多数据源环境下的动态配置。适合开发者在日常开发和调试过程中参考。 ... [详细]
  • Windows环境下部署Kubernetes Dashboard指南
    本指南详细介绍了如何在Windows系统中部署Kubernetes Dashboard,包括下载最新配置文件、修改服务类型以支持NodePort访问、下载所需镜像并启动Dashboard服务等步骤。 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
  • 本文旨在介绍在iOS平台进行直播技术开发前的准备工作,重点讲解AVFoundation框架的基本概念和使用方法。通过对AVFoundation的深入理解,开发者能够更好地掌握直播应用中的音视频处理技巧。 ... [详细]
  • 本文探讨了如何在 Spring 3 MVC 应用程序中配置 MySQL 数据库连接,通过 XML 配置实现 JDBC 直接操作数据库,而不使用 Hibernate 等额外框架。 ... [详细]
  • 本文详细介绍了如何使用Python通过GET和POST方法发送HTTP请求,并接收HTTP响应的具体实现方法。包括示例代码和相关模块的功能说明。 ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • 本文探讨了亚马逊Go如何通过技术创新推动零售业的发展,以及面临的市场和隐私挑战。同时,介绍了亚马逊最新的‘刷手支付’技术及其潜在影响。 ... [详细]
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社区 版权所有