remove()函数不删除excel中的任何行

时间:2017-10-12 11:13:10

标签: java excel apache-poi

我正在尝试使用以下代码删除excel中的所有行:

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

也尝试使用以下代码:

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

在上述两个代码中,其打印行删除了可用行的次数,但最初的行仍未从excel中删除。

有人可以帮助解释为什么仍然没有从Excel中删除行,我该如何删除excel中的所有行?

1 个答案:

答案 0 :(得分: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();