我正在使用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;
}
任何建议都表示赞赏。
答案 0 :(得分:0)
您可能是从CSV转换,还是在xls中进行了任何修改(复制或粘贴)?当我像我提到的那样做一些改变时,我有同样的确切行为。为了解决它,我不得不再次复制原件。很抱歉没有提供真正的解决方案,我只是说发生了什么。 也许这有帮助