当前位置: 首页 > 面试题库 >

Java POI:如何查找具有字符串值的Excel单元格并获取其位置(行)以使用该位置查找另一个单元格

东门修文
2023-03-14
问题内容

我正在电子表格中查找具有字符串’Total’的单元格,然后使用该单元格所在的行来查找另一个始终为相同单元格/列的单元格的总值(0中的第10个单元格基于索引)。

我有以下代码,没有错误(语法),但是findCell方法未返回rowNum值:

    public static void main(String[] args) throws IOException{

        String fileName = "C:\\file-path\\report.xls";
        String cellContent = "Total";
        int rownr=0, colnr = 10;

        InputStream input = new FileInputStream(fileName);

        HSSFWorkbook wb = new HSSFWorkbook(input);
        HSSFSheet sheet = wb.getSheetAt(0);

        rownr = findRow(sheet, cellContent);

        output(sheet, rownr, colnr);

        finish();
    }

    private static void output(HSSFSheet sheet, int rownr, int colnr) {
        /*
         * This method displays the total value of the month
         */

        HSSFRow row = sheet.getRow(rownr);
        HSSFCell cell = row.getCell(colnr);

                System.out.println("Your total is: " + cell);           
    }

    private static int findRow(HSSFSheet sheet, String cellContent){
        /*
         *  This is the method to find the row number
         */

        int rowNum = 0;

        for(Row row : sheet) {
            for(Cell cell : row) {

                while(cell.getCellType() == Cell.CELL_TYPE_STRING){

                    if(cell.getRichStringCellValue().getString () == cellContent);{

                            rowNum = row.getRowNum();
                            return rowNum;  
                    }
                }
            }
        }               
        return rowNum;
    }

    private static void finish() {

        System.exit(0);
    }
}

问题答案:

此方法修复是解决您的问题的方法:

private static int findRow(HSSFSheet sheet, String cellContent) {
    for (Row row : sheet) {
        for (Cell cell : row) {
            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                if (cell.getRichStringCellValue().getString().trim().equals(cellContent)) {
                    return row.getRowNum();  
                }
            }
        }
    }               
    return 0;
}

请记住,您colnr仍然是一个固定值。



 类似资料:
  • 我需要在电子表格中找到包含一些数据的行并将其删除。我所知道的只是这一行单元格内的id。 如何使用google REST API搜索单元格的位置 例如: 另外:我还想支持削减 如果有办法复制 找到该行并删除它。

  • 我怀疑这可能是VBA的工作,这超出了我的能力。但情况是这样的: 表1(CAS1)中的A列包含x行文本值 第2页(CAS2)中的A列包含x行文本值 A部分-对于CAS1中的每个行值,我需要知道字符串是否包含在CAS2中的任何单元格中。不完全匹配,字符串只能是搜索单元格的一部分。 B部分-我需要知道CAS2中包含CAS1值的每个单元格的单元格值(如果它们确实存在,可以在CAS1中搜索的单元格旁边的单元

  • null 问题: 如何在Linux中将MCC、MNC、LAC、Cell ID转换为经纬度值? 为什么每次尝试读取时单元格ID都不同?

  • 我已经编写了一个程序,找到一个包含“customer:”的单元格,并且程序成功地工作。问题是,我想要直接挨着单元格的单元格的值。布局如下所示:

  • 我想写一个excel公式,它可以让我从表2中找到表1的一列值,然后返回表2中的单元格引用, 谢谢,

  • 我试图在我的测试自动化框架中实现一个数据驱动的方面。我已经创建了一个fe函数,它似乎工作正常,可以检索参数的列/行数,从特定单元格获取数据,更新特定单元格等等。 我现在正在用一个基本上有2列的脚本进行测试。第一列是用户名,第二列是密码。我可以遍历这些行,列没有问题。 我遇到了一个问题,如果有一个空白单元格,它会崩溃,但我通过一些错误处理解决了这个问题,如果有一个黑色单元格,它会返回字符串“空单元格