删除包含特定string的多个行

我一直在试图开发一个可以删除包含特定string“POST”的多行的代码。 我一直在这样做:

private void processExcelFile(File f_path){ File path=f_path; HSSFWorkbook wb = null; try{ FileInputStream is=new FileInputStream(path); wb= new HSSFWorkbook(is); HSSFSheet sheet = wb.getSheetAt(0); int j = 0; for(Row row: sheet){ for(Cell cell : row){ count++; if (cell.getCellType() == Cell.CELL_TYPE_STRING){ if (cell.getRichStringCellValue().getString().trim().contains("POST")){ rowcount_post=row.getRowNum(); System.out.print("ROW COUNT= "+rowcount_post); HSSFRow removingRow = sheet.getRow(rowcount_post); if (removingRow != null) { sheet.removeRow(removingRow); } } } } } } catch(Exception e){ JOptionPane.showMessageDialog(this,e.getMessage(),"Error",JOptionPane.ERROR_MESSAGE); } try{ FileOutputStream fileOut = new FileOutputStream("C:/juni.xls"); wb.write(fileOut); } catch(Exception e) { JOptionPane.showMessageDialog(this,e.getMessage(),"SAVE Error",JOptionPane.ERROR_MESSAGE); } } 

事实上,它一次只删除一行。 是否有可能删除所有包含stringPOST的行?

为什么一次只能删除一个问题? 这似乎不是太低效…

无论如何,我敢肯定,你仍然需要循环遍历每个单元格,看它是否包含“POST”。 如果您一次只删除一行时遇到问题,则可以将要删除的行的索引保存在数组中; 然后使用该数组删除保存的行。

一次删除它们的原因是因为您一次只能find一个。 正如另一个海报提到的,你可以跟踪你的程序(无论是在这个循环中)的位置,但这不会使algorithm效率(除非你跟踪它在别的地方,并通过这个信息到这个方法)。

我不太熟悉在Java中使用Excel文件,但这似乎是一个可靠的方法来做到这一点。