easyexcel 读取指定行数据_EasyExcel从指定位置开始读数据
之前小小的接触过easyExcel,代替了传统的poi,上次使用的时候,表头比较传统,也不复杂,但是这次呢表头稍微有点复杂,读取数据要从指定的位置开始,要从指定位置开始读取easyExcel,所以呢在不断的摸索之后,找到了合适的解决方法。
大佬请绕道,此次记录主要是为了自己下次方便查看。
1.先看下我的表头,如下图:1-5行都是表头
要开始读取数据,第6行才是真正的数据,直接上代码,看下图标红的地方,headRowNumber(),不写默认是1,即就是从第二行开始读数据。
2. 说下导入数据的流程:
1.)表头校验: invokeHeadMap()方法。
/**
* @param headMap 传入excel头部(第一行数据)数据的index,name
* 校验excel头部格式,必须完全匹配
*/
int x=0;
@Override
public void invokeHeadMap(MapheadMap,AnalysisContext context) {
x++;
super.invokeHeadMap(headMap, context);
System.out.println(headMap.size());
if(x==3 && headMap.size()!=20) {
teamList.add("解析Excel出错,请传入正确模板的Excel");
}
}
2.)一条一条数据解析 invoke()方法 ,方法里面是我业务逻辑,数据校验。MedBatchDetailsPerExcel 就是每行具体的数据值
/**
* 这个每一条数据解析的时候都回来调用
*/
ListmedBatchDetailsList = new ArrayList<>();//要导入的数据
ListmedBatchDetailsList3=null;
@Override
public void invoke(MedBatchDetailsPerExcel data, AnalysisContext context) {
log.info("解析到一条数据:{}",JSON.toJSONString(data));
total++;
Integer rowIndex=context.readRowHolder().getRowIndex()+1;//+1行(实际中excel中第几行的数据)
MedBatchDetailsPer medBatchDetailsPer=importDataCheck1(data,rowIndex);
importDataCheck(data,rowIndex);
ListmedBatchDetailsList2 =repeatImportCheck(data,rowIndex);//重复导入校验
if (medBatchDetailsList2 != null && medBatchDetailsList2.size() > 0) {
medBatchDetailsList3.addAll(medBatchDetailsList2);
}
medBatchDetailsList.add(medBatchDetailsPer);
}
3.)所有数据解析完, doAfterAllAnalysed()方法,里面写的有保存数据方法。
/**
* 所有数据解析都完成之后,调用
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 这里也要保存数据,确保最后遗留的数据也存储到数据库
insertAllData(empId,medBatchDetailsList.size(),medBatchDetailsList,medBatchDetailsList3);
log.info("所有数据都解析完成!");
}
easyExcel步骤就这几步,具体业务逻辑不一样,只是个敲~~~此次主要记录复杂表头的导入,读取。
easyexcel 读取指定行数据_EasyExcel从指定位置开始读数据相关推荐
- EasyExcel读取第一行数据,读取表头
在EasyExcel中默认是不会去读取表头数据的 我们在编写EasyExcel解析类的时候,继承了AnalysisEventListener类 看一下该类的结构,可以看到它有invokeHeadMap ...
- python删除文件指定行
我们现在有五行数据,我们想删除第三行:pig 删除文本指定行: 删除文本指定行用的是for i in i,找到指定行的关键字,将不包括关键字的其他行放在生成器中,将生成器包含的内容重新写入文件. 我们 ...
- jtable如何从表格中定位_ja中怎样将一个JTable表中的指定行添加到数据库
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:ja中怎样将一个JTable表中的指定行添加到数据库用的是回答:你首先得获取你选择的指定行 (getselectrow()方法),再 ...
- 30_Pandas.DataFrame提取(选择)指定行名和列名的行和列
30_Pandas.DataFrame提取(选择)指定行名和列名的行和列 从pandas.DataFrame中提取(选择)行名称(索引名称)和列名称(列名称)满足特定条件的行或列. 了解如何提取元素包 ...
- 用java实现在txt文本中写数据和读数据
向文本中写数据,一般这些数据我们用来做自动化测试.通过我们制定的一些生成数据的规则,能够快速写数据到文本中. 下面是写数据到txt文本(当然我们可以根据自己的需要写到doc.docx.xlx.xlsx ...
- easyexcel 读取指定行数据_Excel怎么设置只提取指定行中的数据?
Excel怎么设置只提取指定行中的数据?有些时候我们需要从一个excel文件中的数据库中提取指定的行或列中的数据.例如如图示,是国内所有上市公司的行业统计.但是现在我们只需要其中部分上市公司的行业统计 ...
- python pandas库读取excel/csv中指定行或列数据详解
通过阅读表格,可以发现Pandas中提供了非常丰富的数据读写方法,下面这篇文章主要给大家介绍了关于python利用pandas库读取excel/csv中指定行或列数据的相关资料,需要的朋友可以参考下 ...
- python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
文章目录: 1 数据说明 2 把数据集文件信息使用python pandas保存成csv文件 3 使用python pandas 读取csv的每行.每列数据 1 数据说明 1.在test_data目录 ...
- MATLAB中批量从txt文件中读取指定行的数据保存为txt文件
经常遇到,我们想要读取的数据,不是从头开始读取的,我们往往要求从固定的行开始读取,MATLAB代码如下: function readData() %从指定行开始读取数据 readFilePath='C ...
最新文章
- dcut matlab,cut 命令详解
- Docker 不香吗,为啥还要 K8s?
- IIS7下 301重定向 添加WWW
- Xcode 9 新建的工程如何支持 iOS 8
- BZOJ4503 两个串 【fft】
- 小说阅读网站设计HTML,40多个漂亮的网页表单设计实例
- SQL Server 插入数据报IDENTITY_INSERT设置为off
- [Mac入门]如何在Mac下显示Finder中的所有文件
- [HTML5]使用Box2dWeb模拟飞行箭矢
- Spark MLlib(一)正则化特征
- eclipse生成ant build.xml打war包
- 夜曲编程python_python入门‼️夜曲编程‼️
- 【Java爬虫】爬取淘宝买家秀
- 电子与智能化工程专业承包资质标准
- java 量化指标_SAR指标配合阶段高低价的量化交易策略
- EasyExcel表头校验,表内容校验
- 51单片机流水灯现象1
- 计算机系统结构 2:局部性原理
- 谷歌地球不能用了?我敢说大部分人不知道真实原因
- Windows7重装系统后文件夹权限的混乱