2016-10-17 24 views
2

Ich habe eine Tabelle und ich möchte nur Zeilen auswählen, die ein bestimmtes Wort in einer Spalte und ein anderes Wort in einer anderen Spalte haben. Im Moment kann ich nur in einer Zelle in der Reihe nach dem Wort suchen. Wie kann ich das Vorhandensein des Wortes in einer Zelle in einer bestimmten Spalte prüfen?Überprüfen, ob die Zeile das Wort enthält

Hier ist mein Code

FileInputStream fis = new FileInputStream(new File(filepath)); 
XSSFWorkbook  workBook = new XSSFWorkbook (fis); 
XSSFSheet   sheet = workBook.getSheetAt (0); 

List<XSSFRow> filteredRows = new ArrayList<XSSFRow>(); 
Iterator<Row> rows= sheet.rowIterator(); 
while (rows.hasNext()){ 
    XSSFRow row = (XSSFRow) rows.next(); 

    Iterator<Cell> cells = row.cellIterator(); 
    while (cells.hasNext()){ 

     XSSFCell cell = (XSSFCell) cells.next(); 
     if (cell.toString().contains("Ginko")) { 
      filteredRows.add(row); 
      break; 
     } 
    } 
} 
+0

Wissen Sie, welche Spalte (Index oder Namen), die in gesucht werden muss? – Rao

+0

Ja. Nach Name und ggf. nach Kopfzeile –

+0

und nach Nummer in der Zeile –

Antwort

2

Sie können überprüfen, ob eine Zelle in einer bestimmten Spalte ist cell.getColumnIndex() == columnNumber durch den Aufruf. Zum Beispiel:

for(Cell cell : row) { 
    if(cell.getColumnIndex() == 1) { 
    // process a cell in column 1 
    } 
} 

Quelle: https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html#getColumnIndex()

+0

Muss etwas Dummes tun, aber ich bekomme .getAddress als Methode für die Zelle –

+0

Hmm, was ist Ihre Abhängigkeit Version für POI? Das Methodendokument sagt "seit 3.14beta1". – Adam

+0

Tatsächlich habe ich gerade festgestellt, dass es eine '# getColumnIndex'-Methode gibt. Ich aktualisierte meine Antwort, um das zu verwenden, da es direkter ist. – Adam

Verwandte Themen