2017-10-12 343 views
2

我嘗試使用下面的代碼,刪除在Excel中的所有行刪除任何行:remove()函數在Excel

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(); 

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"); 
} 

使用下面的代碼,以及還試圖

在上面的代碼中,它的打印行刪除了可用行的次數,但最初的行並未從excel中刪除。

有人可以幫助爲什麼行仍然不會從Excel中刪除,我怎樣才能刪除Excel中的所有行?

+2

你需要通過編寫變爲文件保存更改後的工作簿。 –

回答

0

您的代碼很好,正在從工作表中刪除行,但它不會反映原始文件中的更改,除非您將這些更改寫入新文件或同一文件中。

下面是代碼:

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

我可以在同一個文件中做這個嗎? –

+0

是的,你可以但首先關閉前一個流 –