转载:https://www.cnblogs.com/oukele/p/11443659.html

引入 jar 包

        <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>1.1.2-beta5</version></dependency>

EasyExcel支持对实体类中的属性进行注解,方便后续进行读写操作。

 id 为 表头,index 代表的是 第0行

@ExcelProperty(value="id",index=0)

新建一个 ExcelModel 实体(需要继承 BaseRowModel)

package com.zh.oukele.model;import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;/*** 表格实体*/
public class ExcelMode extends BaseRowModel {/*** 第一列的数据*/@ExcelProperty(index = 0)private String column1;/*** 第二列的数据*/@ExcelProperty(index = 1)private String column2;public void setColumn1(String column1) {this.column1 = column1;}public String getColumn1() {return column1;}public String getColumn2() {return column2;}public void setColumn2(String column2) {this.column2 = column2;}@Overridepublic String toString() {return "ExcelMode{" +"column1='" + column1 + '\'' +", column2='" + column2 + '\'' +'}';}
}

同步读取 ( 数据量大的时候,不推荐使用,内存消耗比较大  )

    // 简单读取 (同步读取)public static void simpleRead() {// 读取 excel 表格的路径String readPath = "C:\\Users\\oukele\\Desktop\\模拟数据.xlsx";try {// sheetNo --> 读取哪一个 表单// headLineMun --> 从哪一行开始读取( 不包括定义的这一行,比如 headLineMun为2 ,那么取出来的数据是从 第三行的数据开始读取 )// clazz --> 将读取的数据,转化成对应的实体,需要 extends BaseRowModelSheet sheet = new Sheet(1, 1, ExcelMode.class);// 这里 取出来的是 ExcelModel实体 的集合List<Object> readList = EasyExcelFactory.read(new FileInputStream(readPath), sheet);// 存 ExcelMode 实体的 集合List<ExcelMode> list = new ArrayList<ExcelMode>();for (Object obj : readList) {list.add((ExcelMode) obj);}// 取出数据StringBuilder str = new StringBuilder();str.append("{");String link = "";for (ExcelMode mode : list) {str.append(link).append("\""+mode.getColumn1()+"\":").append("\""+mode.getColumn2()+"\"");link= ",";}str.append("};");System.out.println(str);} catch (FileNotFoundException e) {e.printStackTrace();}}

异步读取

新建一个  ExcelModelListener 监听类出来,并且 继承 AnalysisEventListener 类

package com.zh.oukele.listener;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.zh.oukele.model.ExcelMode;import java.util.ArrayList;
import java.util.List;/****  监听器*/
public class ExcelModelListener extends AnalysisEventListener<ExcelMode> {/*** 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收*/private static final int BATCH_COUNT = 5;List<ExcelMode> list = new ArrayList<ExcelMode>();private static int count = 1;@Overridepublic void invoke(ExcelMode data, AnalysisContext context) {System.out.println("解析到一条数据:{ "+ data.toString() +" }");list.add(data);count ++;if (list.size() >= BATCH_COUNT) {saveData( count );list.clear();}}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {saveData( count );System.out.println("所有数据解析完成!");System.out.println(" count :" + count);}/*** 加上存储数据库*/private void saveData(int count) {System.out.println("{ "+ count +" }条数据,开始存储数据库!" + list.size());System.out.println("存储数据库成功!");}}

进行读取

    // 异步读取public static void simpleRead1(){// 读取 excel 表格的路径String readPath = "C:\\Users\\oukele\\Desktop\\模拟数据.xlsx";try {Sheet sheet = new Sheet(1,1,ExcelMode.class);EasyExcelFactory.readBySax(new FileInputStream(readPath),sheet,new ExcelModelListener());} catch (FileNotFoundException e) {e.printStackTrace();}}

读取出来的日期 是 double 类型,转换一下

                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");Date date = HSSFDateUtil.getJavaDate(Double.parseDouble(mode.getColumn2()));String time = sdf.format(date);System.out.println(time);

使用 EasyExcel 读取Excel(两种方式)相关推荐

  1. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

  2. JAVA与PLC通讯读取数据(两种方式)

    第一种方式(s7connector) S7官网:S7Connector - Documentation,有简单的读写操作参考. 1.创建maven工程引入依赖 <dependency>&l ...

  3. Hive元数据的读取的两种方式

    1.直连模式 使用JDBC的方式直接去mysql中读取元数据,称为直连模式 需要的条件: 连接Mysql的驱动,已经放入到$HIVE_HOME/lib下 创建连接时,需要有url,username,p ...

  4. SparkStreaming从Kafka读取数据两种方式

    参考文章:http://www.jianshu.com/p/60344796f8a5 在结合 Spark Streaming 及 Kafka 的实时应用中,我们通常使用以下两个 API 来获取最初的 ...

  5. delphi 读取excel 两种方法

    两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打开,但操作就没有象 操作数据库那么方便了. 一.用ADO连接: 设置属性ConnetionString  选择 Microso ...

  6. Excel文件读取的两种方式

    1.Pandas库的读取操作 from pandas import read_excel dr=read_excel(filename,header) dr#dataframe数据 dw=DataFr ...

  7. [Java中实现Excel表导入导出]基于easy-poi和EasyExcel两种方式实现

    第一种:基于easy-poi实现Excel导入导出 1.导出Excel表格 第一步:在pom文件中导入依赖 <!--基于easy-poi实现Excel导入导出--><dependen ...

  8. Servlet获取Excel中数据的两种方式

    Servlet解析Excel文件的两种方式 简单分享一下Servlet通过解析Excel文件得到其中数据的两种方式 第一种:前端获取 思路:通过layui的第三方插件 layui.excel 解析ex ...

  9. Java操作Excel三种方式POI、Hutool、EasyExcel

    Java操作Excel三种方式POI.Hutool.EasyExcel 1. Java操作Excel概述 1.1 Excel需求概述 1.2 Excel操作三种方式对比 2. ApachePOIExc ...

  10. java操作Excel有两种方式 方式1:jxl操作Excel jxl的API

    java操作Excel有两种方式 方式1:jxl操作Excel 方式2:poi操作Excel 下面介绍jxl API: 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用 ...

最新文章

  1. 程序员敲诈老板,或面临 37 年监禁
  2. Mallet Java【Windows下配置】(解决Ant安装可能会失败的解决方案)
  3. 利物浦大学comp313课程第一节课
  4. php使用mkdir创建多级目录入门例子
  5. 使用JUnitParams进行参数化的JUnit测试
  6. 科来数据包生成器找不到网卡_CPU:网卡老哥,你到底怎么工作的?
  7. AD19 add pins to nets错误_NGINX 502 Bad Gateway错误疑难解答
  8. mui.ajax中文乱码
  9. NP问题验证机的理解
  10. 小白转行学IT入职BAT应该怎么做
  11. Android 购物选择颜色、尺码实现(二)
  12. 起始字节 和起始位_frechlet起始距离fid的简短介绍
  13. 线性代数-向量,矩阵,线性变换
  14. Linux从安装到实战+学校Linux+瑞吉外卖Linux项目部署
  15. Visual Studio 2019中/MD和/MDd区别
  16. 《游戏学习》| 微信蜘蛛侠动作游戏源码分析
  17. 学习Mybatis源码
  18. 点双连通分量 [HNOI2012]矿场搭建
  19. 鲁迅的《白光》表达了什么
  20. babylonjs 动画特效(一)

热门文章

  1. linux 64位系统最新版,CentOS下载_CentOSX64官方正式64位下载4.7 - 系统之家
  2. 持续绩效管理最佳闭环
  3. 关于易宝支付第三方接口的实现
  4. CSS选择器详解(前端系列1)
  5. php Splqueue队列
  6. 研报精选230405
  7. python 黑盒测试_处理Python导入黑盒
  8. C++11:常量表达式
  9. Import Error: from torchtext.data import to_map_style_dataset解决方案
  10. Doris 实践-Compaction调优 3