我正在使用 Apache POI 3.9 进行 xls 和 xlsx 文件处理。
根据逻辑,我想遍历每一行并希望收集数据以进行进一步处理。为此,我使用 sheet.getLastRowNum() 来检索 xls 表中的行数。
但是,如果记录数超过 10,则 sheet.getLastRowNum() 似乎给出了错误的计数。
如果总行数为 10,则它工作正常。否则,它给出的结果减一。即如果工作表中有 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;
}
任何建议表示赞赏。