Java如何利用POI讀取Excel行數(shù)
這篇文章主要介紹了java如何利用POI讀取Execel行數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
java 利用poi 讀excel文件的操作,讀取總的數(shù)據(jù)行數(shù)一般是通過調(diào)用 sheet.getLastRowNum() ;可是這樣有時(shí)候會(huì)出現(xiàn)一些問題,例如,當(dāng)其中一行的數(shù)據(jù)的確都為空,可是其原本的格式還在,并沒有連帶刪除,這樣計(jì)算出來的行數(shù)就不真實(shí)(比真實(shí)的大),還有當(dāng)出現(xiàn)空白行時(shí)(也即某一行沒有任何數(shù)據(jù),通過Row row = sheet.getRow(i) 返回的row值為null),計(jì)算出來的值也不正確。
本人自己寫了一個(gè)方法來對(duì)excel表進(jìn)行過濾,將那些沒有意義的行刪掉,之后再調(diào)用sheet.getLastRowNum() 得到的值就是正確的了。
說明一下,本程序是結(jié)合自己項(xiàng)目的需求編寫的,對(duì)于那些空白行有意義的excel文件來說,本文不存在參考價(jià)值。
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\\倉庫數(shù)據(jù).xls"));
} catch (Exception e) {
//
}
Sheet sheet = wb.getSheetAt(0);
CellReference cellReference = new CellReference("A4");
boolean flag = false;
System.out.println("總行數(shù):"+(sheet.getLastRowNum()+1));
for (int i = cellReference.getRow(); i <= sheet.getLastRowNum();) {
Row r = sheet.getRow(i);
if(r == null){
// 如果是空行(即沒有任何數(shù)據(jù)、格式),直接把它以下的數(shù)據(jù)往上移動(dòng)
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{//如果是空白行(即可能沒有數(shù)據(jù),但是有一定格式)
if(i == sheet.getLastRowNum())//如果到了最后一行,直接將那一行remove掉
sheet.removeRow(r);
else//如果還沒到最后一行,則數(shù)據(jù)往上移一行
sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
}
}
System.out.println("總行數(shù):"+(sheet.getLastRowNum()+1));
}
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)給網(wǎng)站上傳圖片蓋章的方法
這篇文章主要介紹了Java實(shí)現(xiàn)給網(wǎng)站上傳圖片蓋章的方法,涉及java針對(duì)圖片的合成操作技巧,類似水印功能,需要的朋友可以參考下2015-07-07
SpringBoot配置線程池的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot配置線程池的實(shí)現(xiàn)示例,主要包括在Spring Boot中創(chuàng)建和配置線程池,包括設(shè)置線程池的大小、隊(duì)列容量、線程名稱等參數(shù),感興趣的可以了解一下2023-09-09
SpringCloud組件OpenFeign之?dāng)r截器解讀
這篇文章主要介紹了SpringCloud組件OpenFeign之?dāng)r截器用法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例
ajax技術(shù)是使頁面能局部刷新的一種技術(shù),下面這篇文章主要給大家介紹了關(guān)于JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
Eclipse可視化插件WindowBuilder的安裝方法
這篇文章主要介紹了Eclipse可視化插件WindowBuilder的安裝方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06

