使用 EasyExcel 读取Excel 解析复杂表格
使用 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 解析复杂表格相关推荐
- EasyExcel实现Excel解析并返回解析失败数据思路
EasyExcel实现Excel解析并返回解析失败数据思路 需求说明 项目中需要使用到Excel文件上传,处理解析Excel表格数据落库,并返回处理失败的统计数据: 相关技术及插件 这里选择使用阿里开 ...
- Easyexcel·读取excel
Easyexcel·读取excel 依赖 数据表 表的实体类 接口 表的crud操作 此接口用于将excel数据写入mysql测试表表中 测试数据导写入到excle中与读取excel数据 读取exce ...
- 解决easyExcel读取EXCEL用String去接收数字,出现小数点BUG
起因 目前项目中需要使用easyExcel 读取Excel文件,因为后端使用mongodb存储格式,数据格式不确定.因此读取文件时,未传递.class对象(指用方法一调用),使用String 接收Nu ...
- Java 使用EasyExcel读取Excel中多个sheet方法及示例代码
本文主要介绍Java中,使用EasyExcel读取Excel文件中多个Sheet的方法,以及使用示例代码. 1.读取数据的实体对象 @Data public class DemoData {priva ...
- EasyExcel读取Excel日期为数字如何解决
问题: 使用 EasyExcel 读取 Excel 数据时,表格中的日期自动转化为了一串数字 原因: 因为 Excel 导入的时间是以1900 年为原点的,而数字 34839 和 36577 则是19 ...
- python读取Excel中关联表格的数据(只要是同Excel中
来自CSDN-Mr熊 https://blog.csdn.net/qq_41030861/article/details/80515984 谁能告诉我前面这一堆都是什么啊... python读取Exc ...
- 读取excel中的表格数据到字典dict中--python
读取excel中的表格数据到字典dict中--python: 工作中需要把excel表格中的数据读取出来放到字典中,便于检索和数据处理 主要有两种常用方式: 1.表头在第一行,其他行都是数据 2.表头 ...
- 如何使用matlab读取excel中的表格数据
如何使用matlab读取excel中的表格数据? 设备系统:win10. 操作软件:matlab2020b. 1.首先打开matlab软件,点击[新建]-[脚本]. 2.在脚本中输入代码 A=xlsr ...
- 快速使用EasyExcel读取Excel
快速使用EasyExcel读取Excel EasyExcel使用过程 创建接口 OrderUploadExcelListener 类 EasyExcel使用过程 首先导入Maven依赖 创建接口 Ea ...
最新文章
- 机器学习基础---架构设计
- MFC中如何让一个CStatic控件响应消息
- HDU2255(带权二分图的最大匹配)
- #define | enum(enumerator)
- WiFi共享精灵 - 不需路由器一键轻松把网线共享给手机、笔记本等同时无线上网...
- Docker入门,看了不理解,假一赔命
- 【Elasticsearch】需要监控的 10 大 Elasticsearch 指标
- 三星android智能手机usb驱动程序,三星手机USB驱动
- python免费自学爬虫_看这里!免费python网络爬虫一站通
- iOS经典讲解之播放本地音频文件
- Nginx 负载均衡动静分离配置
- (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
- matlab仿真电磁波的产生,电磁场与电磁波Matlab仿真
- 蓝牙耳机无法打开计算机,电脑搜不到蓝牙耳机怎么回事_电脑搜不到蓝牙耳机的处理方法【图文】...
- jupyter notebook第七章seaborn库的一些案例分析加相关函数的解析
- 一、AutoCAD 2013建筑设计师装潢施工设计篇 基本知识
- 3.《程序猿扯淡系列》约会的艺术--教你如何逆袭
- 初一计算机基础知识试题及答案,【2017年整理】计算机基础知识试题及答案.doc...
- 段落分句Java,Java如何将段落分成句子?
- Delphi数据库编程教程(九)