Reputation: 965
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?
Upvotes: 0
Views: 91
Reputation: 878
To fix the dirty solution replace
if (cell.getStringCellValue() == data)
with
if (cell.getStringCellValue().equals(data))
Upvotes: 1
Reputation: 11
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
Upvotes: 1