EasyExcel

  • EasyExcel是阿里开源的一个excel处理框架,以使用简单、节省内存著称,其能大大减少内存占用的原因是因为在解析Excel的时候,并没有把excel文件中所有的内容都一次性全部加载到内存中,而是从文件中一行一行进行读取,逐个解析。
  • Java领域中,excel处理的比较有名的框架主要是poi和jxl,但这两个都存在内存占用非常大的问题,如果系统的并发量不大的话基本没有什么问题,但是如果并发使用量特别大的话,极容易造成OOM问题。
  • EasyExcel读取文件采用一行一行读取,数据读取后,会调用对应的Listener进行处理,这里采用了观察者的设计模式。
  • github地址

show the code

  • pom文件

    <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version>
    </dependency>
    
  • 定义跟excel文件中内容对应的java实体类
    @Data
    public class ExcelData {@ExcelProperty("id")private Integer id ;@ExcelProperty("name")private String name ;@ExcelProperty("email")private String email ;
    }
    

    其中ExcelProperty注解指定了实体类中的属性与excel文件中文件头的对应关系。

  • 编写相应的Listener
    class MyListener2 extends AnalysisEventListener<ExcelData> {private List<ExcelData> dataList ;public MyListener2(List<ExcelData> dataList){this.dataList = dataList ;}public void invoke(ExcelData data, AnalysisContext context) {dataList.add(data);}public void doAfterAllAnalysed(AnalysisContext context) {System.out.println("数据读取完毕。。。。。。");}
    }
    

    其中,dataList属性为接收数据的存储结构,在listener构造器中进行传入。监听器中,invoke方法为easyExcel每读取一行数据后进行调用的方法,而doAfterAllAnalysed方法为excel文件整体读取完毕后调用的方法。

  • 调用code
    @Test
    public void test_EasyExcel() throws Exception {List<ExcelData> dataList = new LinkedList<ExcelData>();//指定读取的文件ExcelReaderBuilder builder = EasyExcel.read("C:\\\\Users\\\\Administrator\\\\Desktop\\\\123.xlsx");//自动关闭流builder.autoCloseStream(true);//指定excel文件的typebuilder.excelType(ExcelTypeEnum.XLSX);//注册数据读取后处理的监听器builder.registerReadListener(new MyListener2(dataList));//指定标题与属性的对应关系的classbuilder.head(ExcelData.class);//读取文件builder.doReadAll();//打印获取到的数据for (ExcelData data : dataList) {System.out.println(data);}
    }
    

使用EasyExce对excel进行读取相关推荐

  1. cdatabase读取excel第一行数据_“蟒蛇”py对Excel的读取——数据操作用它,老板都得重新认识你...

    在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似批量数据操作还会写在python文件中吗? 应对这一问 ...

  2. java连接Excel数据库读取,写入,操纵Excel表格

    java连接Excel数据库读取,写入,操纵Excel表格 (2009-11-15 14:21:03) 转载 标签: java excel 连接 杂谈 分类:技术文档 java连接MicroSoft ...

  3. Apache POI和EasyExcel 第四集:Apache POI的Excel基本读取(分为03版的xls、07版的xlsx)

    Apache POI和EasyExcel 第四集:Apache POI的Excel基本读取(分为03版的xls.07版的xlsx) 一.资源 一个十分好用的日期类型处理包,和Java8搭配使用非常好 ...

  4. python获取excel某一列-Python从Excel中读取日期一列的方法

    如下所示: import xlrd import datetime file=u"伏特加.xls"#注意读中文文件名稍微处理一下 data=xlrd.open_workbook(f ...

  5. python读取excel一列-Python从Excel中读取日期一列的方法

    import xlrd import datetime file=u"伏特加.xls"#注意读中文文件名稍微处理一下 data=xlrd.open_workbook(file) t ...

  6. Python 技术篇 - 用xlrd库和xlwt库操作excel,对excel进行读取和写入实例演示

    首先你需要安装 xlrd 和 xlwt 这两个库,一个是读库,一个是写库. 先来说一下这两个库的局限性: 局限性一: 不能用于 xlsx 文件 局限性二: 写的时候不能写入已有的文件,只能重新建 解决 ...

  7. python如何将生成的随机数存入文件中_用python在excel中读取与生成随机数写入excel中...

    今天是我第一次发博客,就关于python在excel中的应用作为我的第一篇吧. 具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再 ...

  8. java poi之Excel的读取

    poi之Excel的读取 package com.imooc.excel;import java.io.File; import java.io.FileInputStream; import jav ...

  9. java jxl之Excel的读取

    jxl之Excel的读取 package jxl;import java.io.File; import java.io.IOException;import jxl.read.biff.BiffEx ...

最新文章

  1. linux查询数据库sql,SQL Server 跨数据库查询
  2. docker omv 防火墙_OpenMediaVault(OMV)配置Docker
  3. Node搭建静态资源服务器时后缀名与响应头映射关系的Json文件
  4. 防火墙(4)——iptables(2)增加修改规则-A -R
  5. C#_自动化测试 (四) 自动卸载软件
  6. 为什么选择微服务架构?如何取舍?
  7. 公司“凉凉”都怪大楼风水?望京SOHO诉自媒体案正式开庭
  8. html导航栏模板代码生成器,关于代码生成器的html页面模板支持更多类型的问题...
  9. Leetcode之字符串转换整数
  10. 计算机组成与系统结构第五版pdf,计算机组成与系统结构1_5习题整理版.pdf
  11. VMWARE ESXI 6.5U1离线补丁包升级教程
  12. 计算机学院部长换届答辩,未来可期,各自精彩——记计算机科学学院2020年两委换届竞职答辩活动...
  13. sql 计算周环比wow_Oracle计算环比的方法
  14. 电子计算机上的off是什么意思,计算器上off是什么意思
  15. 全国计算机大学排名2019最新排名,2019全国大学最新排名 中国最好大学排行榜
  16. php font 字体加粗,字体加粗(font-weight)
  17. K8s系列之:DNS服务搭建指南
  18. 读书笔记||控制论、信息论、系统论
  19. 【Unity Shader】聚光灯体积光效果的简单实现
  20. Skywalking极简入门

热门文章

  1. itoa、_itoa、ltoa、_ltoa、ultoa、_ultoa、_i64toa、_ui64toa、_itow、_ltow、_ultow、_i64tow、_ui64tow (转载)
  2. Matlab-TOA定位算法性能仿真 TOA-LLOP和TOA-CHAN得到位置的估计 两种算法的性能比较 两种算法的RMSE曲线对比图
  3. 3.13 采购到货计划下达
  4. 【HTML】模板元素(`<template>`标签)的特点与使用方法
  5. 梅艳芳吴君如为争华仔反目 朱丽倩渔翁得利
  6. iPad2 iOS 5.0.1+ Xcode 4.3 免证书(iDP)开发 + 真机调试 生成IPA全攻略
  7. Idea中代码编码GBK在编译Task :compileJava出现的错误
  8. cad记忆口诀_10天学会CAD制图,精通变大神,以后再不有求于人
  9. 使用路由器来防止ARP攻击-----[TP-Link router]
  10. jq项目webpack打包步骤