使用 EasyExcel 读取Excel 解析复杂表格

  • 解析如下复杂表格(比这个更复杂的也可以)
  • 引入依赖
  • 创建实体类 继承 需要继承 (BaseRowModel)
  • 同步读取 ( 数据量大的时候,不推荐使用,内存消耗比较大 )
  • 异步读取
  • 转化格式

解析如下复杂表格(比这个更复杂的也可以)

引入依赖

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

创建实体类 继承 需要继承 (BaseRowModel)

注意这里是列

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
import lombok.Data;@Data
public class TESTData extends BaseRowModel {/*** 第一列的数据*/@ExcelProperty(index = 0)private String sylj;/*** 第二列的数据*/@ExcelProperty(index = 1)private String xm1;/*** 第三列的数据*/@ExcelProperty(index = 2)private String xm2;}

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

        retData listNew = new retData();//  0 第几个sheet  1 从第几行开始读Sheet sheet2 = new Sheet(0, 1, TESTData .class);List<Object> List = EasyExcelFactory.read(new BufferedInputStream(new FileInputStream(readPath)), sheet2);listNew.setName(excelName);listNew.setSheetName("SheetName");listNew.setData(List );retDataList.add(listNew2);

异步读取

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<Object> {/*** 每隔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();}}

转化格式

   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. EasyExcel实现Excel解析并返回解析失败数据思路

    EasyExcel实现Excel解析并返回解析失败数据思路 需求说明 项目中需要使用到Excel文件上传,处理解析Excel表格数据落库,并返回处理失败的统计数据: 相关技术及插件 这里选择使用阿里开 ...

  2. Easyexcel·读取excel

    Easyexcel·读取excel 依赖 数据表 表的实体类 接口 表的crud操作 此接口用于将excel数据写入mysql测试表表中 测试数据导写入到excle中与读取excel数据 读取exce ...

  3. 解决easyExcel读取EXCEL用String去接收数字,出现小数点BUG

    起因 目前项目中需要使用easyExcel 读取Excel文件,因为后端使用mongodb存储格式,数据格式不确定.因此读取文件时,未传递.class对象(指用方法一调用),使用String 接收Nu ...

  4. Java 使用EasyExcel读取Excel中多个sheet方法及示例代码

    本文主要介绍Java中,使用EasyExcel读取Excel文件中多个Sheet的方法,以及使用示例代码. 1.读取数据的实体对象 @Data public class DemoData {priva ...

  5. EasyExcel读取Excel日期为数字如何解决

    问题: 使用 EasyExcel 读取 Excel 数据时,表格中的日期自动转化为了一串数字 原因: 因为 Excel 导入的时间是以1900 年为原点的,而数字 34839 和 36577 则是19 ...

  6. python读取Excel中关联表格的数据(只要是同Excel中

    来自CSDN-Mr熊 https://blog.csdn.net/qq_41030861/article/details/80515984 谁能告诉我前面这一堆都是什么啊... python读取Exc ...

  7. 读取excel中的表格数据到字典dict中--python

    读取excel中的表格数据到字典dict中--python: 工作中需要把excel表格中的数据读取出来放到字典中,便于检索和数据处理 主要有两种常用方式: 1.表头在第一行,其他行都是数据 2.表头 ...

  8. 如何使用matlab读取excel中的表格数据

    如何使用matlab读取excel中的表格数据? 设备系统:win10. 操作软件:matlab2020b. 1.首先打开matlab软件,点击[新建]-[脚本]. 2.在脚本中输入代码 A=xlsr ...

  9. 快速使用EasyExcel读取Excel

    快速使用EasyExcel读取Excel EasyExcel使用过程 创建接口 OrderUploadExcelListener 类 EasyExcel使用过程 首先导入Maven依赖 创建接口 Ea ...

最新文章

  1. 机器学习基础---架构设计
  2. MFC中如何让一个CStatic控件响应消息
  3. HDU2255(带权二分图的最大匹配)
  4. #define | enum(enumerator)
  5. WiFi共享精灵 - 不需路由器一键轻松把网线共享给手机、笔记本等同时无线上网...
  6. Docker入门,看了不理解,假一赔命
  7. 【Elasticsearch】需要监控的 10 大 Elasticsearch 指标
  8. 三星android智能手机usb驱动程序,三星手机USB驱动
  9. python免费自学爬虫_看这里!免费python网络爬虫一站通
  10. iOS经典讲解之播放本地音频文件
  11. Nginx 负载均衡动静分离配置
  12. (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  13. matlab仿真电磁波的产生,电磁场与电磁波Matlab仿真
  14. 蓝牙耳机无法打开计算机,电脑搜不到蓝牙耳机怎么回事_电脑搜不到蓝牙耳机的处理方法【图文】...
  15. jupyter notebook第七章seaborn库的一些案例分析加相关函数的解析
  16. 一、AutoCAD 2013建筑设计师装潢施工设计篇 基本知识
  17. 3.《程序猿扯淡系列》约会的艺术--教你如何逆袭
  18. 初一计算机基础知识试题及答案,【2017年整理】计算机基础知识试题及答案.doc...
  19. 段落分句Java,Java如何将段落分成句子?
  20. Delphi数据库编程教程(九)

热门文章

  1. Python---qq群聊天记录词云分析
  2. 数据库设计规范之三大范式
  3. MySQL模糊查询%
  4. 输入小写字母、数字、下划线
  5. pjax php,php整合pjax(pushstate+ajax)实现无刷新页面
  6. 防雷检测:保护电子设备的重要防线
  7. python编写姓名年龄_python综合练习:学生管理系统
  8. 【实战-干货】手把手带你搭建自己的FTP服务器,实现文件上传、下载
  9. 树莓派-- NOOBS安装
  10. Host is not allowed to connect to this MySQL server的解决办法