Hallo zusammen,
ich habe eine Frage zum Thema POI.
Und zwar lösche ich in einem Excelsheet mit der Methode removeRow eine Zeile und rücke alle darunterliegenden Zeilen mit shiftRow eins höher.
Also wenn ich nun 10 Zeilen habe und Zeile 5 gelöscht wird, werden Zeile 6 bis 10 auf Position 5 bis 9 hochgerückt. Nun habe ich das Problem, dass Zeile 10 zwar leer ist, aber trotzdem noch als vorhandene Zeile (mit leeren Spalten) erkannt wird. Der rowIterator zählt auch die leere, so eben gelöschte Zeile mit.
Warum tut er das und wie kann ich die letzte Zeile entgültig löschen?
Hier das löschen und verschieben der Zeilen
Und hier das iterieren über die Excel-Tabelle
Kann jemand helfen? :bahnhof:
ich habe eine Frage zum Thema POI.
Und zwar lösche ich in einem Excelsheet mit der Methode removeRow eine Zeile und rücke alle darunterliegenden Zeilen mit shiftRow eins höher.
Also wenn ich nun 10 Zeilen habe und Zeile 5 gelöscht wird, werden Zeile 6 bis 10 auf Position 5 bis 9 hochgerückt. Nun habe ich das Problem, dass Zeile 10 zwar leer ist, aber trotzdem noch als vorhandene Zeile (mit leeren Spalten) erkannt wird. Der rowIterator zählt auch die leere, so eben gelöschte Zeile mit.
Warum tut er das und wie kann ich die letzte Zeile entgültig löschen?
Hier das löschen und verschieben der Zeilen
Code:
HSSFRow row = mySheet.getRow(rowNumber);
//Zeile löschen
mySheet.removeRow(row);
//Zeilen unter der gelöschten Zeile eins hochgerücken, von totalCountsOfRows eins abziehen, da index bei 0 beginnt
mySheet.shiftRows(rowNumber, totalCountOfRows-1, -1);
Und hier das iterieren über die Excel-Tabelle
Code:
public static Vector readExcelFile() throws Exception
{
Vector cellVectorHolder = new Vector();
HSSFWorkbook myWorkBook = prepareExcelSheet();
HSSFSheet mySheet = myWorkBook.getSheetAt(0);
Iterator rowIter = mySheet.rowIterator();
while(rowIter.hasNext()){
HSSFRow myRow = (HSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
Vector cellStoreVector=new Vector();
while(cellIter.hasNext()){
HSSFCell myCell = (HSSFCell) cellIter.next();
cellStoreVector.addElement(myCell);
}
cellVectorHolder.addElement(cellStoreVector);
}
return cellVectorHolder;
}
Kann jemand helfen? :bahnhof: