Java的POI:如何找到一个字符串值的Excel单元格并获取其位置(行)使用该位置找到另一个小区 [英] Java POI: How to find an Excel cell with a string value and get its position (row) to use that position to find another cell

查看:8037
本文介绍了Java的POI:如何找到一个字符串值的Excel单元格并获取其位置(行)使用该位置找到另一个小区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一个小区中为具有字符串总计,然后使用在其中该单元是行找到另一个细胞,其始终是相同的细胞/列的总价值(preadsheet在0基于索引的第10单元)。

我有以下的code,它没有错误(语法),但findCell方法没有返回值的rowNum:

 公共静态无效的主要(字串[] args)抛出IOException        字符串文件名=C:\\\\文件路径\\\\的report.xls
        字符串cellContent =总计;
        INT rownr = 0,colnr = 10;        输入的InputStream =新的FileInputStream(文件名);        HSSFWorkbook WB =新HSSFWorkbook(输入);
        HSSFSheet片= wb.getSheetAt(0);        rownr = findRow(片材,cellContent);        输出(片材,rownr,colnr);        完();
    }    私有静态无效输出(HSSFSheet片,诠释rownr,诠释colnr){
        / *
         *此方法显示本月的合计值
         * /        HSSFRow行= sheet.getRow(rownr);
        HSSFCell细胞= row.getCell(colnr);                的System.out.println(您一共是:+细胞);
    }    私有静态诠释findRow(HSSFSheet片,串cellContent){
        / *
         *这是寻找行号的方法
         * /        INT的rowNum = 0;        对于(鳞次栉比:表){
            (电池单元:行){                而(cell.getCellType()== Cell.CELL_TYPE_STRING){                    如果(cell.getRichStringCellValue()的getString()== cellContent); {                            的rowNum = row.getRowNum();
                            返回的rowNum;
                    }
                }
            }
        }
        返回的rowNum;
    }    私有静态无效完成(){        System.exit(0);
    }
}


解决方案

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

 私有静态诠释findRow(HSSFSheet片,串cellContent){
    对于(鳞次栉比:表){
        (电池单元:行){
            如果(cell.getCellType()== Cell.CELL_TYPE_STRING){
                如果(cell.getRichStringCellValue()的getString()。修剪()。等于(cellContent)){
                    返回row.getRowNum();
                }
            }
        }
    }
    返回0;
}

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

I'm looking for a cell in a spreadsheet that has the string 'Total' and then use the row in which that cell is to find the total value in another cell which is always the same cell/column (the 10th cell in a 0 based index).

I have the following code, which has no errors (syntax), but the findCell method is not returning rowNum value:

    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);
    }
}   

解决方案

This method fix is the solution to your problem:

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;
}

Keep in mind that your colnr is still a fixed value.

这篇关于Java的POI:如何找到一个字符串值的Excel单元格并获取其位置(行)使用该位置找到另一个小区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆