2016-06-10 42 views
0

循環一次,我有一個電子表格containging行喜歡這個如何將廣告串匹配僅在Apache的POI HSSF

SomeText1 SomeText2 SomeText3 
Tommy  Tommy  John 
Gilaen Tamara  Shaz 
Tamara  Phil  Tamara 

我要篩選包含「塔瑪拉」行,所以行,我應該得到的將是

SomeText1 SomeText2 SomeText3 
Gilaen Tamara  Shaz 
Tamara  Phil  Tamara 

要嘗試這樣做,我用下面的代碼

Map<String,String> mapEndoscBarr= new LinkedHashMap<String,String>(); 
      FileInputStream fis = new FileInputStream(new File(filepath)); 
      HSSFWorkbook  workBook = new HSSFWorkbook (fis); 
      HSSFSheet   sheet = workBook.getSheetAt (0); 

      List<HSSFRow> filteredRows = new ArrayList<HSSFRow>(); 

      //Filter by pathology from what I am given 
      Iterator<Row> rows= sheet.rowIterator(); 
      while (rows.hasNext()){ 
      HSSFRow row = (HSSFRow) rows.next(); 
      Iterator<Cell> cells = row.cellIterator(); 
      while (cells.hasNext()){ 
       HSSFCell cell = (HSSFCell) cells.next(); 
        if (cell.toString().contains("Tamara")) { 
         filteredRows.add(row); 
        } 
      } 
      } 

然而循環將此行everyti我找到匹配,這樣我結束了重複的行如下:

SomeText1 SomeText2 SomeText3 
Gilaen Tamara  Shaz 
Tamara  Phil  Tamara 
Tamara  Phil  Tamara 

如何強制只是一個比賽,所以我沒有得到這個重複的,如果塔瑪拉存在該行中的任何地方它匹配。

回答

3

剛打出來的細胞反覆進行匹配後的任何細胞的發現:

Map<String,String> mapEndoscBarr= new LinkedHashMap<String,String>(); 
      FileInputStream fis = new FileInputStream(new File(filepath)); 
      HSSFWorkbook  workBook = new HSSFWorkbook (fis); 
      HSSFSheet   sheet = workBook.getSheetAt (0); 

      List<HSSFRow> filteredRows = new ArrayList<HSSFRow>(); 

      //Filter by pathology from what I am given 
      Iterator<Row> rows= sheet.rowIterator(); 
      while (rows.hasNext()){ 
      HSSFRow row = (HSSFRow) rows.next(); 
      Iterator<Cell> cells = row.cellIterator(); 
      while (cells.hasNext()){ 
       HSSFCell cell = (HSSFCell) cells.next(); 
        if (cell.toString().contains("Tamara")) { 
         filteredRows.add(row); 
         break; 
        } 
      } 
      } 
+0

大。謝謝。以爲我將不得不重新安排循環。 –

相關問題