1. 程式人生 > >獲取Excel sheet頁中實際有效行數(不是我寫的,但是也不是我轉載的)

獲取Excel sheet頁中實際有效行數(不是我寫的,但是也不是我轉載的)

private List<Integer> realNumberOfRow(HSSFSheet sheet){
int realNums = 0;
int firstNum = sheet.getFirstRowNum();
int lastNum = sheet.getLastRowNum();
List<Integer> number=new ArrayList<Integer>();//獲取每個有值的行數下標
for (int i=firstNum;i<=lastNum;i++){

HSSFRow row = sheet.getRow(i);
int end = 0;
if(row!=null ){
end = row.getLastCellNum();
}/*else{//將為空的行刪除
sheet.shiftRows(i+1, sheet.getLastRowNum()+1,-1);
continue;
}*/
boolean isNotBlankRow = false;
for(int j=0;j<end;j++){
HSSFCell cell=row.getCell(j);
//若有一個單元格不為空則此行非空
if(cell!=null){
int cellType=cell.getCellType();
String cellValue = null;
if (cellType == HSSFCell.CELL_TYPE_BLANK){//將為空的行刪除
//sheet.shiftRows(i+1, sheet.getLastRowNum()+1,-1);
cellValue = "";
continue;
}else if(cellType == HSSFCell.CELL_TYPE_BOOLEAN){
cellValue = String.valueOf(cell.getBooleanCellValue());
}else if(cellType == HSSFCell.CELL_TYPE_ERROR){
cellValue = String.valueOf(cell.getErrorCellValue());
}else if(cellType == HSSFCell.CELL_TYPE_FORMULA){
cellValue = cell.getCellFormula();
}else if(cellType == HSSFCell.CELL_TYPE_NUMERIC){
DecimalFormat df = new DecimalFormat("#");
if (HSSFDateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cellValue = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
// 如果是date型別則 ,獲取該cell的date值
//value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();
} else { // 純數字
cellValue = df.format(cell.getNumericCellValue());
}
//cellValue = String.valueOf(cell.getNumericCellValue());
}else if(cellType == HSSFCell.CELL_TYPE_STRING){
cellValue = cell.getStringCellValue();
}else{


}
if(!StringUtil.isBlank(cellValue)){
isNotBlankRow = true;
break;
}
}
}
if(isNotBlankRow){
number.add(i);
realNums += 1;
}
}
return number;
}