按内容获取单元格

时间:2014-05-07 13:47:33

标签: java excel apache-poi

有没有办法通过单元格包含的数据来获取单元格对象或坐标?

例如,如果坐标为(1; 5)的单元格包含字符串"FINDME",我喜欢做类似Workbook.GetCellByData(" FINDME")的内容,它应该返回Cell对象或(1; 5)。

我在Apache POI网站上找到了一个可能有用的code snippet。我可以阅读整个工作簿并使用IF语句查找数据,但这有点脏...

修改: 我编写了#34;脏"解决方案如下:

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;

由于某种原因,它在if语句中失败了。我希望获得内容为"%title%"的Cell。

输出:

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!

有人知道为什么这不起作用吗?

2 个答案:

答案 0 :(得分:1)

我想我可以帮助你。你只需为行和列创建两个for()循环,然后键入Workbook.getCellValue(i,j)(i是行的编号,j是列的编号

答案 1 :(得分:1)

修复脏解决方案替换

if (cell.getStringCellValue() == data)

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