2016-06-10 6 views
0

Ich habe eine Tabelle containging Zeilen ähnlich wie dieseWie Anzeigen String Match nur einmal in der Schleife in Apache POI HSSF

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

ich für Zeilen filtern möchten enthält ‚Tamara‘ so den Reihen sollte ich werde erhalten

SomeText1 SomeText2 SomeText3 
Gilaen Tamara  Shaz 
Tamara  Phil  Tamara 

um zu versuchen, dies zu tun, ich

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

jedoch die Schleife der Zeile everyti fügt den folgenden Code verwenden mir die Übereinstimmung gefunden wird, so dass ich mit duplizierten Zeilen am Ende wie folgt:

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

Wie kann ich nur ein Spiel zwingen so nicht diese doppelte ich bekomme und es passt, wenn Tamara vorhanden überall in der Reihe ist.

Antwort

3

brechen einfach aus der Zelle Iteration einmal ein Spiel in jeder der Zellen zu finden ist:

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

Großen. Vielen Dank. Ich dachte, ich müsste die Schleife neu arrangieren. –

Verwandte Themen