2017-10-12 2 views
2

Ich versuche, alle Zeilen in einer Excel unter Verwendung des folgenden Codes zu löschen:remove() Funktion keine Zeilen in Excel zu entfernen

InputStream oFile=new FileInputStream(DefectExcel); 
Workbook oWB= WorkbookFactory.create(oFile);  
Sheet sheet= oWB.getSheet(Sheet1); 
Row oRow= sheet.getRow(i); 

for (int i =0;i <=sheet.getLastRowNum(); i++) { 
    sheet.removeRow(sheet.getRow(i)); 
    System.out.println("Row Deleted"); 
} 

auch versucht, wie auch den folgenden Code verwendet:

InputStream oFile=new FileInputStream(DefectExcel); 
Workbook oWB= WorkbookFactory.create(oFile);  
Sheet sheet= oWB.getSheet(Sheet1); 
Row oRow= sheet.getRow(i); 
Iterator<Row> rowIte = sheet.iterator(); 
while(rowIte.hasNext()){ 
    System.out.println("Row deleted"); 
    rowIte.next();    
    rowIte.remove(); 

In beiden oben genannten Code hat die Druckzeile die Anzahl der verfügbaren Zeilen gelöscht, aber die Zeile wurde immer noch nicht aus der Excel gelöscht.

Kann mir bitte jemand helfen, warum die Zeilen immer noch nicht vom Excel gelöscht werden und wie kann ich alle Zeilen im Excel entfernen?

+2

Sie müssen durch Schreiben der Änderungen in die Datei die geänderte Arbeitsmappe speichern. –

Antwort

0

Ihr Code ist gut und entfernt Zeilen aus dem Blatt, aber es wird nicht die Änderungen in der ursprünglichen Datei widerspiegeln, es sei denn, Sie schreiben diese in neue Datei oder gleiche Datei. Hier

ist der Code:

FileInputStream fis = new FileInputStream(new File("file.xlsx")); 
Workbook workbook = new XSSFWorkbook(fis); 
fis.close(); 
.........<some code>...... 
.......................... 
FileOutputStream is = new FileOutputStream("file.xlsx"); 
workbook.write(is); 
is.close(); 
+0

Kann ich das in der gleichen Datei machen? –

+0

Ja, Sie können aber zuerst den vorherigen Stream schließen –

Verwandte Themen