2017-10-12 338 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

是的,你可以但首先关闭前一个流 –