# Excel nach bestimmten Inhalt durchsuchen



## active89 (10. Sep 2012)

Hallo!

Bin Neuling in der Java-Welt und hätte ein Frage.

Mittels apache POI möchte ich eine Exceldatei nach bestimmten Inhalten durchsuchen:

Gemeint wäre folgendes: 
Suche nach Zelle mit Inhalt "Name1"
Ausgabe der Zeilen- und Spaltennummer der gefundenen Zelle
Ausgabe der Zelle mit gleicher Zeilennummer und Spalte 5

finde leider keinen Befehl womit man Zellen durchsuchen kann.

Ich hoffe ihr könnt mir helfen


----------



## SlaterB (10. Sep 2012)

kannst du generell alle Zellen ausgeben, etwa
java - how to read all cell value using Apache POI? - Stack Overflow
?
hol dir die Cell-Werte, z.B. als String, evtl. Typ prüfen, Nicht-String-Zellen ignorieren,
vergleichen, von richtiger Zelle die Koordinaten zurückgeben,
normale for-i-Schleifen dafür wohl geeigneter als for-each ohne Index, aber da könnte man auch mitzählen


----------



## active89 (10. Sep 2012)

Vielen Dank für die rasche Antwort.

Wie gesagt, ich bin Neuling in der Java Welt. Leider komme ich mit dem Code des Links nicht wirklich zurecht.

Kurz zur Detailierung.

Die Tabelle sieht in etwa so aus:

*Spalte1      Spalte2 *
Name1      text1
Name2      text2
...

Nun möchte ich Spalte1 nach einem bestimmten Namen durchsuchen.
Ist diese gefunden, soll der zugehörige Text aus Spalte2 (selbe Zeile) ausgegeben werden.

Gibt es eine einfache Möglichkeit (Anfängertauglich) dies zu realisieren?


----------



## SlaterB (10. Sep 2012)

anfängertauglich ist die jeweiligen Codes zu kopieren,
gibt es ganz schlimme Fehlermeldungen da mal wieder ganz andere Versionen des Frameworks im Einsatz sind,
oder funktioniert im entgegengesetzten Extrem sogar die Ausgabe einer Datei?

gewisse Anpassungen wie Intergration in dein Programm, Angabe deiner Datei usw. sind natürlich nötig, zumutbar?
die Doppelschleife über alle Zellen wäre jedenfalls der Ausgangspunkt,
bzw. suche in der API wie du pro Row mit einem Index die Zelle einer bestimmten Spalte findest,
eine verständliche Aufgabe oder schon überfordert?

usw.


----------



## active89 (10. Sep 2012)

Klar, diverse Anpassungen bzw. einbindung schaffe ich (denke ich).

Bei diesem Code blicke ich aber leider nicht durch, wesshalb mir die intigration schwer fällt.

Ich habe schon einige recht kurze Codes zu ähnlichen Themen gefunden, leider aber noch nichts passendes / funktionierendes.
Darum denke ich dass es sicherlich eine einfacher Lösung geben müsste.


----------



## SlaterB (10. Sep 2012)

wo genau siehst du nicht durch?
bis  /** We now need something to iterate through the cells.**/
ist es doch nur Standard-Code zum Öffnen,
dann folgt die Doppelschleife

wenn du da etwas nicht verstehst musst du es schon einzeln nennen,
dass etwa 
> HSSFRow myRow = (HSSFRow) rowIter.next();
in der Iterator-Variante die neue Zeile holt ist einfach so, 
einfacheren Code wird es in dem Bereich kaum geben,

solange du nicht konkrete Fragen hast kann ich kaum mehr sagen


----------



## active89 (10. Sep 2012)

danke für deine Bemühungen.

Nun gut: Nach dem ersten Testlauf wird der ganze Inhalt der xls ausgegeben.

Wo kann ich überhaupt den Suchbegriff definieren??


----------



## SlaterB (10. Sep 2012)

ganz simpel als eine Variable im Quelltext für equals-Vergleiche,
je nach Aufwand auch von Konsole oder GUI einlesen


----------



## active89 (10. Sep 2012)

So. Hab jetzt selbst eine Lösung zusammegebastellt.

Ist einfach und funktioniert so wie sie soll:


```
InputStream input = new FileInputStream("PFAD");
        HSSFWorkbook wb = new HSSFWorkbook(input);
        HSSFSheet sheet = wb.getSheet("Tabelle1");
        int Zeile = 0;
        
        HSSFCell cell = sheet.getRow(Zeile).getCell(0);    
             
        while(!("Name".equals(cell.getStringCellValue())))
        {  
        Zeile++;
        cell = sheet.getRow(Zeile).getCell(0);
        }
     
     System.out.print(Zeile+1);
     System.out.print(sheet.getRow(Zeile).getCell(3));
```


----------

