xls および xlsx ファイル処理に Apache POI 3.9 を使用しています。
ロジックに従って、各行を反復処理し、さらに処理するためにデータを収集したいと考えています。そのために、sheet.getLastRowNum() を使用して xls シートの行数を取得しています。
しかし、レコードの数が10を超える場合、sheet.getLastRowNum()は間違ったカウントを与えるようです。
行の総数が 10 の場合は正常に機能します。それ以外の場合は、1 を差し引いた結果が得られます。つまり、シートに 15 行ある場合、最後の行番号として 14 が与えられます。
誰でも私に提案できますか、この問題を解決するには??
データを収集するために使用しているコードは次のとおりです...
public static List<LinkedList<String>> populateExcelSheetContentWithHeader(Sheet sheet,int columnsCount,int rowsCount) throws Exception{
Row row = null;
List<LinkedList<String>> excelFileRecordsList = new LinkedList<LinkedList<String>>();
int emptyColCount = 0;
String freeTextData = null;
LinkedList<String> excelFileDataList =null;
int actualRows = sheet.getLastRowNum();
if (actualRows < rowsCount) {
rowsCount = actualRows;
}
///ITERATE OVER EACH ROW AND POPULATE THE DATA
for(int index=0;index<rowsCount;index++){
row = sheet.getRow(index);
if(row!=null){
emptyColCount = 0;
excelFileDataList =new LinkedList<String>();
for(int colIndex=0;colIndex<columnsCount;colIndex++){
freeTextData = "";
if(isEmptyCell(row.getCell(colIndex))){
emptyColCount++;
}else{
freeTextData = getCellValue(row.getCell(colIndex),false);
}
//ADD TEXT DETILS TO THE LIST
excelFileDataList.add(freeTextData);
}
//CHECK FOR END OF FILE
if(emptyColCount != columnsCount){
excelFileRecordsList.add(excelFileDataList);
}else{
break;
}
}
}
return excelFileRecordsList;
}
任意の提案をいただければ幸いです。