使用apache poi如何读取特定的excel行和列

时间:2015-12-01 09:51:54

标签: java apache-poi

嗨我想在第一行搜索字符串,如果找到字符串,那么我想移动该列。

for (int i = 0; i < 1; i++) {                   

    Row row = firstSheet.getRow(i); 

    for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {
        String rtm=row.getCell(j).getStringCellValue();

        if(rtm.contains(text)){
            System.out.println(row.getCell(j).getStringCellValue()+"|| ");

        }       
    }
}

1 个答案:

答案 0 :(得分:2)

问题在于您的第一行:

for (int i = 0; i < 1; i++) {                   

这只会运行一次循环,这就是你只获得第一行的原因!

对于非字符串单元格,例如数字单元格,您的代码也会失败。

我建议您花一些时间来read the Apache POI documentation on iterating over rows and cells。那你可能想要更像的东西:

System.out.println("Searching for cells containing '" + text + "'");

DataFormatter formatter = new DataFormatter();
for (Sheet sheet : wb ) {
    for (Row row : sheet) {
        for (Cell cell : row) {
            String value = formatter.formatCellValue(cell);
            if (value.contains(text)) {
               System.out.println("Found at " + (new CellReference(cell)).formatAsString() + ":");
               System.out.println(value);
            }
        }
    }
}

这将处理非字符串单元格,并为您提供如下输出:

Searching for cells containing 'needle'
Found at A5
This is a needle
Found at B10
A needle can be helpful

然后根据需要进行调整!