Java如何利用POI读取Excel行数

这篇文章主要介绍了java如何利用POI读取Execel行数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

java 利用poi 读excel文件的操作,读取总的数据行数一般是通过调用 sheet.getLastRowNum() ;可是这样有时候会出现一些问题,例如,当其中一行的数据的确都为空,可是其原本的格式还在,并没有连带删除,这样计算出来的行数就不真实(比真实的大),还有当出现空白行时(也即某一行没有任何数据,通过Row row = sheet.getRow(i) 返回的row值为null),计算出来的值也不正确。

本人自己写了一个方法来对excel表进行过滤,将那些没有意义的行删掉,之后再调用sheet.getLastRowNum() 得到的值就是正确的了。

说明一下,本程序是结合自己项目的需求编写的,对于那些空白行有意义的excel文件来说,本文不存在参考价值。

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));
  } 

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java实现在线预览--poi实现word、excel、ppt转html的方法

    java实现在线预览 - -之poi实现word.excel.ppt转html,具体内容如下所示: ###简介 java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office.office web 365(http://www.officeweb365.com/)他们都有云在线预览服务,就是要钱0.0 如果想要免费的,可以用openoffice,还需要借助其他的工具(例如swfTools.FlexPaper等)才

  • Java 读取excel 文件流代码实例

    这篇文章主要介绍了Java 读取excel 文件流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 public static void initType(String path) { try { //1 获取excel文件流 excel xls 文件 暂不支持xlsx if (path.contains("xlsx") || path.contains("XLSX")) { System.err.

  • JAVA使用POI(XSSFWORKBOOK)读取EXCEL文件过程解析

    经过一番搜索发现,java操纵excel文件常用的有jxl和poi两种方式,孰好孰坏看自己需求而定. 其中最主要的区别在于jxl不支持.xlsx,而poi支持.xlsx 这里介绍的使用poi方式(XSSFWorkbook),实际上poi提供了HSSFWorkbook和XSSFWorkbook两个实现类.区别在于HSSFWorkbook是针对.xls文件,XSSFWorkbook是针对.xslx文件. 首先明确一下基本概念: 先创建一个工作簿,一个工作簿可以有多个工作表,一个工作表可以有多个行,一

  • 利用Java实现复制Excel工作表功能

    本文归纳了关于Java如何复制Excel工作表的方法,按不同复制需求,可分为: 1. 复制工作表 1.1 在同一个工作簿内复制工作表 1.2 在不同工作簿间复制工作表 2. 复制指定单元格数据 对于复制方法copy(),这里简单整理了一个表格,其中包含了对数据复制的不同应用需求,可参考使用: 方法 解释 copyFrom(Worksheet worksheet) 复制自源工作表的数据 copy(CellRange sourceRange, CellRange destRange) 复制源数据到目

  • java poi sax方式处理大数据量excel文件

    系统需要用到一个导入excel文件的功能,使用poi组件常规方式读取excel时,内存耗尽,OutOfMemoryError,或者读取非常慢 所以写了一个工具类,使用poi sax方式读取excel,速度快很多,内存消耗可以接受. 测试结果如下: .xlsx文件,35M大小,总4个sheel, 只读取第一个,37434行,54列 总行数:37434 读取耗时:39秒 打印耗时:17秒 主要代码如下: ExcelUtils.class 主入口 package com.xxx.bi.utils.ex

  • java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通任(前)督(后)二(开)脉(发)的梦想转了后端,自学两礼拜java+spring全家桶,直接上项目实战.最近接到一需求:将业务数据导出一张透视表. 需求开发完成已近有一段时间了,甲方的大爷大妈,爷爷奶奶们也都用的很开心,我也很开心,于是就心想咱学了也不能白学,所以写下这篇随笔. 先看下用easypo

  • Java使用POI导出大数据量Excel的方法

    今天需要写一个导出的Excel的功能,但是发现当数据量到3万条时,列数在23列时,内存溢出,CPU使用100%,测试环境直接炸掉.在本地测试时发现,导出3000条左右的数据的时候,堆内存瞬间升高500M左右.然后发现了 SXSSFWorkbook 这个类. 简介 SXSSFWorkbook 需要 poi-ooxml 包 3.8 及以上开始支持,我这边适使用的是 3.9 版本,本质是一个 XSSFWorkbook 类( Excel2007 ),它使用的方式是采用 硬盘空间 来大幅降低 堆内存 的占

  • 如何使用Java在excel单元格中设置超链接

    这篇文章主要介绍了如何使用Java在excel单元格中设置超链接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 (一)问题引入 有时候我们在导入数据到excel中时可能要给某个文件或图片设置超链接,例如链接到外网或者是本地的某个目录.我们可以通过Java代码来实现,借助POI库. (二)解决方案 下面直接给出参考代码示例: File file; Workbook wb = new XSSFWorkbook(file); Sheet sheet

  • java 如何往已经存在的excel表格里面追加数据的方法

    第一步.导入jar包,两个 poi.jar包  地址在 https://www.jb51.net/softs/542575.html jxl.jar包  地址在  https://www.jb51.net/softs/544392.html 第二步.编写程序 package cn.com.com; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import

  • Java如何利用POI读取Excel行数

    这篇文章主要介绍了java如何利用POI读取Execel行数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java 利用poi 读excel文件的操作,读取总的数据行数一般是通过调用 sheet.getLastRowNum() ;可是这样有时候会出现一些问题,例如,当其中一行的数据的确都为空,可是其原本的格式还在,并没有连带删除,这样计算出来的行数就不真实(比真实的大),还有当出现空白行时(也即某一行没有任何数据,通过Row row = sh

  • Java利用poi读取Excel详解实现

    目录 前言 第一步导入依赖 第二步实现测试类+测试 实际应用 前言 用户可以直接读取本地文件,也可以通过上传文件的形式读取excel 注意:poi对于读取到空白行的时候,会默认的认为是最后一行,将不会再读取空白行下面的数据 第一步导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</vers

  • java利用POI读取excel文件的方法

    摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File; import java.io.FileInputStream; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook

  • java poi读取excel操作示例(2个代码)

    项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 复制代码 代码如下: /* * 使用POI读取EXCEL文件 */import java.io.File;import java.io.FileInputStream;import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFCell;impor

  • Java中利用POI优雅的导出Excel文件详解

    前言 故事是这样开始的: 公司给排了几天的工期,让完成 2 个功能模块的开发.其中有一个场景是这样的,从 Excel 导入数据,要求数据不能重复.用户可以下载导入失败的 Excel 文件. 这样就有 2 种实现 将失败数据存储数据库,需要下载时生成 Excel 下载即可 将失败数据生成 Excel 文件存储文件服务器,然后返回下载链接. 老大要求按方案二进行.好吧,导出 Excel 是再常见不过的功能了,然而总是觉得以前写的不够优雅,所以决定进行简单的封装,以适应简单场景的 Excel 导出.

  • java如何利用poi解析doc和docx中的数据

    前言 这个功能是工作中遇到的一个需求,需要把上传的word中的内容解析出来,其中包含段落字符串解析,和表格中的数据解析出来,需要支持doc和docx格式的数据 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能. 方法如下: 1.增加maven中的包 <dependency> <

  • Java使用apache poi操作excel的方式

    目录 一.基本介绍 1.1.Apache POI介绍 1.2.HSSF和XSSF 1.3.引入依赖 二.利用poi库创建excel 2.1.创建一个空excel 2.2.简单演示写入excel内容 2.3.通常的写入数据流程 三.使用POI读取Excel内容 3.1.读取excel示例 一.基本介绍 1.1.Apache POI介绍 Apache POI是一个可以进行微软的文档进行开源库,可以操作的文档类型包括word.ppt.excel.visio.outlook.... 本文主要针对Apac

  • spring boot如何使用POI读取Excel文件

    目录 spring boot 使用POI读取Excel文件 Excel文件目录 重要说明 读取Excel文件 获取sheet表格及读写单元格内容 合并单元格 SpringBoot解析Excel 以批量导入课程为例 spring boot 使用POI读取Excel文件 Excel文件目录 Excel模板文件存了resourse目录下,如下图: <dependency> <groupId>org.apache.poi</groupId> <artifactId>

  • 利用Python读取Excel表内容的详细过程

    目录 用python读取excel表中的数据 这里再多说一下,np.hstack()函数和 np.vstack()函数: 总结 用python读取excel表中的数据 假如说有如下一张存储了数据的excel表,其中x1-x6是特征,y_label是特征对应的类别标签.我们想要使用python对以下数据进行数据分析,那么第一步就要先把excel表中的数据读取出来才行.这里我们主要使用到了python中的pandas库. 首先确定excel表存放的路径所在,比如我的路径是 ‘E:\relate_co

  • 关于Poi读取Excel引发内存溢出问题的解决方法

    前言 最近生产环境有个老项目一直内存报警,不时的还出现内存泄漏,导致需要重启服务器,已经严重影响正常服务了. 分析 1.dump内存文件 liunx使用如下命令: ./jmap -dump:format=b,file=heap.hprof pid 2.使用Eclipse Memory Analysis进行分析 异常如下: at org.apache.poi.xssf.usermodel.XSSFRow.<init>(Lorg/openxmlformats/schemas/spreadsheet

随机推荐