java 获取excel的行数_关于Java:如何使用POI库获取Excel文件中的行数?
伙计们,我目前正在使用POI 3.9库来处理excel文件。 我知道getLastRowNum()函数,该函数在Excel文件中返回许多行。
唯一的问题是getLastRowNum()返回一个从0开始计数的数字。
因此,如果Excel文件使用前3行,则getLastRowNum()返回2。
如果Excel文件只有1行,则getLastRowNum()返回0。
Excel文件完全为空时,会发生此问题。 getLastRowNum()仍返回0,因此我无法确定Excel文件是否具有1行数据,或者它是否为空。
那么,如何检测Excel文件是否为空?
尝试Sheet.getPhysicalNumberOfRows()
+1马西娅斯。只是,如果仅通过按Delete键删除单元格,则看来行实际上仍然存在,并且返回了旧计数。
好吧,我认为,如果您想对实际上具有一些非空值的行进行计数,则需要自己对其进行迭代。我不确定,但是我知道此方法会返回曾经被"声明过"的行数。
警告:如果工作表中有空白行,则getPhysicalNumberOfRows不将它们包括在返回的计数中。但是,getLastRowNum也完全按照其提示进行操作。因此,要遍历所有行,您需要使用getLastRowNum + 1作为迭代循环的上限-小心处理可能不存在的行。
由于Sheet.getPhysicalNumberOfRows()不会计算空行,并且Sheet.getLastRowNum()在只有一行或没有行的情况下都返回0,因此我结合使用这两种方法来准确地计算总行数。
int rowTotal = sheet.getLastRowNum();
if ((rowTotal > 0) || (sheet.getPhysicalNumberOfRows() > 0)) {
rowTotal++;
}
注意:这会将具有一个空行的电子表格视为没有任何电子表格,但对于大多数目的而言,这可能是可以的。
您可以做两件事
采用
int noOfColumns = sh.getRow(0).getPhysicalNumberOfCells();
要么
int noOfColumns = sh.getRow(0).getLastCellNum();
他们之间有很好的区别
选项1给出实际填充内容的列数(如果10列的第二列未填充,您将得到9)
选项2仅给您最后一列的索引。因此完成了'getLastCellNum()'
如果您检查
if
(getLastRowNum()<1){
res="Sheet Cannot be empty";
return
}
这将确保您至少有一行包含标题以外的数据。下面是我的程序,可以正常工作。 Excel文件具有三列,即。 ID,NAME,LASTNAME
XSSFWorkbook workbook = new XSSFWorkbook(inputstream);
XSSFSheet sheet = workbook.getSheetAt(0);
Row header = sheet.getRow(0);
int n = header.getLastCellNum();
String header1 = header.getCell(0).getStringCellValue();
String header2 = header.getCell(1).getStringCellValue();
String header3 = header.getCell(2).getStringCellValue();
if (header1.equals("ID") && header2.equals("NAME")
&& header3.equals("LASTNAME")) {
if(sheet.getLastRowNum()<1){
System.out.println("Sheet empty");
return;
}
iterate over sheet to get cell values
}else{
SOP("invalid format");
return;
}
该文档指出,它从零开始。因此,对于getLastRowNum(),如果没有列或只有1个(在您的情况下为标头),则将返回0。因此,用于检查是否有任何行getPhysicalNumberOfRows()也应使用。
HSSF工作表文档还包含有关此主题的更多内容。
要查找最后一个数据行,以防您在excel中创建了表格模板,该模板部分填充或行之间为空。
逻辑:
int count = 0;
int emptyrow=0;
int irow=0;
while (rowIterator.hasNext()) {
row = (Row) rowIterator.next();
if (count != 0 && !checkIfRowIsEmpty(row)) { }
else{
if(count!=0 && emptyrow==irow){
emptyrow++;
}else{
emptyrow=0;
irow=0;
}
}
if(emptyrow>0){
irow++;
}
if(emptyrow>3){
break;
}
count++;
}
java 获取excel的行数_关于Java:如何使用POI库获取Excel文件中的行数?相关推荐
- java中获取文件总行数_关于java:如何以有效的方式获取文件中的行数?
本问题已经有最佳答案,请猛点这里访问. 我有一个大文件. 它包括大约3.000-20.000行. 如何使用Java获取文件中的行总数? 从你的评论到答案来判断,你要找的词是"有效的" ...
- Java黑皮书课后题第8章:*8.26(行排序)用下面的方法实现一个二维数组中的行排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵
*8.26(行排序)用下面的方法实现一个二维数组中的行排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...
- linux 取文件字节数,如何在Linux上的C中获取文件中的字符数(而不是字节数)
我想获取文件中的字符数.字符我的意思是"真正的"字符,而不是字节.假设我知道文件编码. 我尝试使用mbstowcs()但它不起作用,因为它使用系统区域设置(或使用setlocale ...
- sed删除以什么开头的内容_使用 sed 命令删除文件中的行
原标题:使用 sed 命令删除文件中的行 Sed 代表流编辑器 Stream Editor ,常用于 Linux 中基本的文本处理.sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要 ...
- 对文件中的行,单词和字符进行迭代
编写不同的文本处理和文件操作脚本时,通常需要对文件中的行,单词和字符进行迭代,尽管这个问题看起来很简单,但是实现起来却常常出现问题,下面,就让我们来看看怎样实现上述功能. 为了实现上述的功能,我们需要 ...
- 【C++】读取txt文件中指定行的内容
使用c++读取TXT文件中指定行的内容 classification_classes_ILSVRC2012.txt:下载链接 验证: #include <iostream> #includ ...
- linux中sed -i命令修改文件内容、在文件中插入行、删除文件中删除行
文章目录 0.sed -i与sed 1.修改文件内容 2.在文件中插入行 3.在文件中删除行 4.使用find查找文件,并用 | xargs传输文件名给sed命令 0.sed -i与sed sed - ...
- Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?...
Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢? 分想一个知乎网 ...
- python之从文件中按行读取数据
#!/usr/bin/env python3 # -*- coding: utf-8 -*-__author__ = 'jiangwenwen'# 从文件中按行读取数据 file = open(&qu ...
- Idea 中出现:运行 Test 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。
Idea 中出现:运行 Test 时出错.命令行过长. 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行. 在项目的 .idea 目录下的 workspace.xml 中的 <comp ...
最新文章
- Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)
- 华人一作登ICCV 2021,实时超分新SOTA!AutoML显神威:1%参数量,超清视频70倍加速...
- python爬虫程序说明_Python即时网络爬虫:API说明
- (一)硕博生常用的中文文献检索方式推荐
- Glide @GlideModule 注解使用
- AWS 基础服务学习
- 如何在 IntelliJ IDEA 中快速生成 JavaDoc 注释模板
- LeetCode—210. 课程表 II
- Exynos4412裸机开发 —— RTC 实时时钟单元
- Mac系统安装Windows系统
- 计算机二级是要报所有科目吗,我要报考计算机等级考试二级,是全部科目都要考吗?...
- xlsx文件打开乱码_Excel打开出现乱码的解法方法
- elasticsearch实践之代码结构设计
- 什么杀毒软件最好|什么杀毒软件好用
- 五种“网络钓鱼”实例解析及防范技巧(转)
- Android APK瘦身之Android Studio Lint (代码审查)
- 1.什么情况下发生GC
- python学习笔记---函数【廖雪峰】
- 海信电视power android,海信智能电视投屏之安卓手机miracast投屏教程
- 智能座舱,一场正在发生的交互革命