Pregunta

Is there a way to get the cell object or coordinate by the data the cell contains?

For example if the cell with coordinates (1;5) contains the string "FINDME", i'd like to do something like Workbook.GetCellByData("FINDME") and it should return the Cell object or (1;5).

I have found a code snippet on the Apache POI website that could be useful. I could just read the whole workbook and find the data with an IF-statement, but that's kind of dirty...

EDIT: I have coded the "dirty" solution as follows:

public Cell getCellByContent(String data) {
    for (Row row : wb.getSheetAt(0)) {
        for (Cell cell : row) {           
            if (cell.getCellType() == Cell.CELL_TYPE_STRING){
                System.out.println(String.format("Found String type at (%s,%s) and read: %s", row.getRowNum(), cell.getColumnIndex(), cell.getStringCellValue()));
                if (cell.getStringCellValue() == data) { //HERE
                    return cell;                         //HERE
                }                                        //HERE
            }
        }
    }
    System.out.println("Can't find it bruh!");
    return null;

For some reason it fails at the if-statement. Id like to get the Cell with the content "%title%".

Output:

Found String type at (0,0) and read: %title% <------ IT'S RIGHT HERE!
Found String type at (2,0) and read: Test Information
...
Can't find it bruh!

Does someone have an idea why this is not working?

¿Fue útil?

Solución

To fix the dirty solution replace

if (cell.getStringCellValue() == data)

with

if (cell.getStringCellValue().equals(data))

Otros consejos

I think I can help you. you just make two for() loops for rows and columns and then type Workbook.getCellValue(i,j) (i is the number of the row and j is the number of the column

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top