java 利用poi 读execel文件的操作,读取总的数据行数一般是通过调用 sheet.getLastRowNum() ;可是这样有时候会出现一些问题,例如,当其中一行的数据的确都为空,可是其原本的格式还在,并没有连带删除,这样计算出来的行数就不真实(比真实的大),还有当出现空白行时(也即某一行没有任何数据,通过Row row = sheet.getRow(i) 返回的row值为null),计算出来的值也不正确。
本人自己写了一个方法来对execel表进行过滤,将那些没有意义的行删掉,之后再调用sheet.getLastRowNum() 得到的值就是正确的了。
说明一下,本程序是结合自己项目的需求编写的,对于那些空白行有意义的execel文件来说,本文不存在参考价值。
package test;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class test2{
public static void main(String[] args) {
Workbook wb = null;
try {
wb = new HSSFWorkbook(new FileInputStream("E:\\Workspaces\\testdata\\仓库数据.xls"));
} catch (Exception e) {
//
}
Sheet sheet = wb.getSheetAt(0);
CellReference cellReference = new CellReference("A4");
boolean flag = false;
System.out.println("总行数:"+(sheet.getLastRowNum()+1));
for (int i = cellReference.getRow(); i <= sheet.getLastRowNum();) {
Row r = sheet.getRow(i);
if(r == null){
// 如果是空行(即没有任何数据、格式),直接把它以下的数据往上移动
sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
continue;
}
flag = false;
for(Cell c:r){
if(c.getCellType() != Cell.CELL_TYPE_BLANK){
flag = true;
break;
}
}
if(flag){
i++;
continue;
}
else{//如果是空白行(即可能没有数据,但是有一定格式)
if(i == sheet.getLastRowNum())//如果到了最后一行,直接将那一行remove掉
sheet.removeRow(r);
else//如果还没到最后一行,则数据往上移一行
sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
}
}
System.out.println("总行数:"+(sheet.getLastRowNum()+1));
}
}
分享到:
相关推荐
Java如何利用POI读取Excel行数 Java如何利用POI读取Excel行数是Java开发者中一个常见的问题。在Java中,我们可以使用Apache POI库来读取Excel文件中的数据。在本篇文章中,我们将详细介绍如何使用POI库来读取Excel...
本篇文章将详细讲解如何利用Apache POI库在Android环境中高效地处理大数据量的Excel文件,无论是2003的.xls格式还是2007及以后的.xlsx格式。 首先,我们需要在项目中引入Apache POI库。如果是Maven项目,可以在pom....
根据提供的代码片段,我们可以看到一个名为`getExcelAsFile`的方法,该方法接受一个文件路径作为参数,然后使用Apache POI来读取Excel文件,并将数据存储到`List<StuEntity>`中。 1. **文件读取**: ```java ...
在Java编程中,如果你需要读取Excel文件的列数和行数,Apache POI 提供了API来进行这类操作。以下将详细介绍如何使用POI来获取Excel的列数和行数。 首先,你需要在项目中引入Apache POI的相关依赖。对于Maven项目,...
使用Java POI读取Excel文件通常涉及以下几个步骤: 1. 创建`FileInputStream`对象以读取文件。 2. 创建`Workbook`对象以解析Excel文件。 3. 遍历每个Sheet,并获取其相关信息。 #### 四、代码实现 接下来,我们将...
Apache POI 是一个流行的开源库,它允许开发者使用Java语言来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx 和 .xls)。本教程将深入探讨如何使用Apache POI库来复制Excel表格的指定行数及其样式。...
标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...
以上就是关于如何使用Apache POI的SXSSF API解决读取Excel 2007文件时内存溢出问题的关键知识点。通过这种方式,我们可以处理大文件而不会过度消耗内存,从而提高程序的稳定性和效率。在实际项目中,需要根据具体...
在这个例子中,我们主要关注如何使用POI读取Excel文件。以下是对给定代码的详细解释以及相关知识点: 1. **导入所需的库**: 首先,我们需要导入Apache POI相关的类,如`File`, `FileInputStream`, `IOException`,...
本案例中,我们探讨了如何利用Apache POI来有效地读取大尺寸的Excel文件,并将其转换为CSV格式。 首先,了解Apache POI的基本用法是至关重要的。POI提供了两种主要的API来操作Excel文件:HSSF(用于处理.xls文件,...
- 读取Excel文件时,要注意文件格式和版本,不同版本的Excel文件结构可能略有差异。 通过以上步骤和知识点,你可以使用Java POI库高效地进行Excel操作,无论是读取现有数据还是创建新的Excel文件。记得参考官方...
Apache POI是一个强大的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,...
这就是使用Apache POI在Java中读取Excel文件的基本流程。你可以根据需要扩展此基础,例如处理公式、样式、超链接等更复杂的功能。记住, POI库提供了丰富的API,能够满足各种复杂的Excel操作需求。在实际应用中,...
它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。以下是关于使用Java POI进行Excel操作的关键知识点: 1. **Apache POI介绍**: ...
在Java编程中,读取Excel文件并生成矩阵是一项常见的任务,尤其在数据分析、报表处理或者数据导入导出的场景下。Excel文件通常用于存储结构化的表格数据,而矩阵则是一种有效的数据表示方式,便于计算和分析。下面...
Java 读取 Excel 文件是 Java 语言中常见的操作之一,通过使用 Apache POI 库,可以轻松地读取 Excel 文件中的数据。本文将通过 ReadExcelUtil 工具类,详细介绍如何读取 Excel 文件。 读取 Excel 文件 ...
本文将深入探讨如何利用Java和Apache POI来高效地解析百万行的Excel数据。 首先,理解Excel文件的结构至关重要。Excel 2007及以上版本(.xlsx格式)使用了基于OpenXML标准的ZIP文件结构,这使得文件可以被分割成多...
总之,Java使用Apache POI库读取Excel文件是相对直观且功能强大的,但需要注意文件格式、数据类型转换、异常处理等问题。随着经验的积累,你可以根据实际需求对代码进行优化和扩展,以满足更复杂的需求。
Apache POI 是一个强大的 Java 库,用于读写 Microsoft Office 文件格式,特别是Excel。相比于早期的 Jxl,POI 提供了对更高版本的 Excel(如2007及以上)的支持,同时也带来了更全面的功能。然而,POI 的复杂性也是...
三、使用POI读取模板并填充数据 1. 加载模板:使用XSSFWorkbook实例化对象,加载模板文件。 ```java FileInputStream fis = new FileInputStream("template.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(fis);...