`

java 利用POI 读取Execel数据的真实行数

    博客分类:
  • Java
阅读更多
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如何利用POI读取Excel行数是Java开发者中一个常见的问题。在Java中,我们可以使用Apache POI库来读取Excel文件中的数据。在本篇文章中,我们将详细介绍如何使用POI库来读取Excel...

    使用Poi读取大数据量excel的方法

    本篇文章将详细讲解如何利用Apache POI库在Android环境中高效地处理大数据量的Excel文件,无论是2003的.xls格式还是2007及以后的.xlsx格式。 首先,我们需要在项目中引入Apache POI库。如果是Maven项目,可以在pom....

    poi获取exccel有合并单元格的数据

    根据提供的代码片段,我们可以看到一个名为`getExcelAsFile`的方法,该方法接受一个文件路径作为参数,然后使用Apache POI来读取Excel文件,并将数据存储到`List&lt;StuEntity&gt;`中。 1. **文件读取**: ```java ...

    JAVA使用POI获取Excel的列数与行数

    在Java编程中,如果你需要读取Excel文件的列数和行数,Apache POI 提供了API来进行这类操作。以下将详细介绍如何使用POI来获取Excel的列数和行数。 首先,你需要在项目中引入Apache POI的相关依赖。对于Maven项目,...

    java使用POI获取sheet、行数、列数

    使用Java POI读取Excel文件通常涉及以下几个步骤: 1. 创建`FileInputStream`对象以读取文件。 2. 创建`Workbook`对象以解析Excel文件。 3. 遍历每个Sheet,并获取其相关信息。 #### 四、代码实现 接下来,我们将...

    poi复制指定行数的Excel表格内容

    Apache POI 是一个流行的开源库,它允许开发者使用Java语言来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx 和 .xls)。本教程将深入探讨如何使用Apache POI库来复制Excel表格的指定行数及其样式。...

    poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行

    标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...

    解决poi读取excel2007出现内存溢出问题代码参

    以上就是关于如何使用Apache POI的SXSSF API解决读取Excel 2007文件时内存溢出问题的关键知识点。通过这种方式,我们可以处理大文件而不会过度消耗内存,从而提高程序的稳定性和效率。在实际项目中,需要根据具体...

    POI读取Excel

    在这个例子中,我们主要关注如何使用POI读取Excel文件。以下是对给定代码的详细解释以及相关知识点: 1. **导入所需的库**: 首先,我们需要导入Apache POI相关的类,如`File`, `FileInputStream`, `IOException`,...

    POI读取Excel大文件-输出cvs文件.rar

    本案例中,我们探讨了如何利用Apache POI来有效地读取大尺寸的Excel文件,并将其转换为CSV格式。 首先,了解Apache POI的基本用法是至关重要的。POI提供了两种主要的API来操作Excel文件:HSSF(用于处理.xls文件,...

    java poi 操作Excel

    - 读取Excel文件时,要注意文件格式和版本,不同版本的Excel文件结构可能略有差异。 通过以上步骤和知识点,你可以使用Java POI库高效地进行Excel操作,无论是读取现有数据还是创建新的Excel文件。记得参考官方...

    POI实现Excel导入导出并附带加载进度条

    Apache POI是一个强大的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,...

    JAVA使用POI对Excel读取

    这就是使用Apache POI在Java中读取Excel文件的基本流程。你可以根据需要扩展此基础,例如处理公式、样式、超链接等更复杂的功能。记住, POI库提供了丰富的API,能够满足各种复杂的Excel操作需求。在实际应用中,...

    java poi操作excel批量导入导出项目需要的jar包

    它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。以下是关于使用Java POI进行Excel操作的关键知识点: 1. **Apache POI介绍**: ...

    java读取excel文件生成矩阵

    在Java编程中,读取Excel文件并生成矩阵是一项常见的任务,尤其在数据分析、报表处理或者数据导入导出的场景下。Excel文件通常用于存储结构化的表格数据,而矩阵则是一种有效的数据表示方式,便于计算和分析。下面...

    java读取excel

    Java 读取 Excel 文件是 Java 语言中常见的操作之一,通过使用 Apache POI 库,可以轻松地读取 Excel 文件中的数据。本文将通过 ReadExcelUtil 工具类,详细介绍如何读取 Excel 文件。 读取 Excel 文件 ...

    Java解析大数据量Excel,可解析1048576行excel

    本文将深入探讨如何利用Java和Apache POI来高效地解析百万行的Excel数据。 首先,理解Excel文件的结构至关重要。Excel 2007及以上版本(.xlsx格式)使用了基于OpenXML标准的ZIP文件结构,这使得文件可以被分割成多...

    java读取excel所有页的数据

    总之,Java使用Apache POI库读取Excel文件是相对直观且功能强大的,但需要注意文件格式、数据类型转换、异常处理等问题。随着经验的积累,你可以根据实际需求对代码进行优化和扩展,以满足更复杂的需求。

    POI读写海量Excel(详细解读)

    Apache POI 是一个强大的 Java 库,用于读写 Microsoft Office 文件格式,特别是Excel。相比于早期的 Jxl,POI 提供了对更高版本的 Excel(如2007及以上)的支持,同时也带来了更全面的功能。然而,POI 的复杂性也是...

    poi 基于excel模板导出功能

    三、使用POI读取模板并填充数据 1. 加载模板:使用XSSFWorkbook实例化对象,加载模板文件。 ```java FileInputStream fis = new FileInputStream("template.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(fis);...

Global site tag (gtag.js) - Google Analytics