Java poiループ行getLastRowNumの不正確な問題の解決
2691 ワード
質問:Excelに10本ある場合、データ、5行削除後、sheet.getLastRowNum()の到値か、それとも10というバグはどうやって解決しますか??
あるいは本来のexcelデータは空であるが、読み取ったsheet.getLastRowNum()は数字があり、しかも大きい....
このような状況はいくつかの不要な循環をして、しかも間違いを報告しやすいので、この問題を解決するために、私はいろいろな資料を探して、最後に簡単な方法でこの問題を避けることができます.
1、CellTypeは以下のタイプである.
CellType
Value
CELL_TYPE_NUMERIC
0
CELL_TYPE_STRING
1
CELL_TYPE_FORMULA
2
CELL_TYPE_BLANK
3
CELL_TYPE_BOOLEAN
4
CELL_TYPE_ERROR
5
2、Cellの内容を読み取る時、CellType==CELL_に遭遇するBLANK_TYPEの場合a、cellに従う.getNumericCellValue()は、0.0に読み込まれます.
b、cell.getStringCellValue()を読み込むと、emptyのStringが読み込まれます.
まずコードを示します
以上の方法は、あなたに理解させるのに十分です.実際の開発でこの問題を回避したい場合は、まずこの方法を理解してから、実際の開発作業に応用します.
あるいは本来のexcelデータは空であるが、読み取ったsheet.getLastRowNum()は数字があり、しかも大きい....
このような状況はいくつかの不要な循環をして、しかも間違いを報告しやすいので、この問題を解決するために、私はいろいろな資料を探して、最後に簡単な方法でこの問題を避けることができます.
1、CellTypeは以下のタイプである.
CellType
Value
CELL_TYPE_NUMERIC
0
CELL_TYPE_STRING
1
CELL_TYPE_FORMULA
2
CELL_TYPE_BLANK
3
CELL_TYPE_BOOLEAN
4
CELL_TYPE_ERROR
5
2、Cellの内容を読み取る時、CellType==CELL_に遭遇するBLANK_TYPEの場合a、cellに従う.getNumericCellValue()は、0.0に読み込まれます.
b、cell.getStringCellValue()を読み込むと、emptyのStringが読み込まれます.
まずコードを示します
public static boolean isRowEmpty(Row row){
System.out.println(" excle "+row.getLastCellNum());
for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) {
Cell cell = row.getCell(i);
if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK){
System.out.println(" :"+(i+1));
return false;
}else {
System.out.println(" excle "+(i+1));
break;
}
}
return true;
}
以上の方法は、あなたに理解させるのに十分です.実際の開発でこの問題を回避したい場合は、まずこの方法を理解してから、実際の開発作業に応用します.