首页 > 解决方案 > 读取与 CSV 中的行和列对应的特定数据

问题描述

我需要一些帮助。我想实现一个代码,我希望从 csv 文件中读取数据。

示例 CSV 文件 (details.csv):

身份证,姓名,年龄

1,bh,23

2,尼特,24

我想在 java 中创建这样一个方法来读取这个 CSV,我将 sheetname、columnname 和 rowname 作为参数传递。只要有这种组合的匹配,就会选择相应的数据。

示例:- 我想传递 details.csv、name 和 1。我应该得到输出为 bh。

你能帮我解决这个问题吗?

我尝试使用以下代码,但它返回空值:-

public static String searchCsvLine(String filename, String searchString, String rowname) throws IOException {
    String resultRow = null;
    BufferedReader br = new BufferedReader(new FileReader(filename));

    String line;

        while ( (line = br.readLine()) != null ) {
        String[] values = line.split(",");

        if(values.equals(searchString)) {
            resultRow = line;
            break;
        }
    }
    br.close();
    return resultRow;
}

标签: javacsvseleniumautomation

解决方案


试试下面:

public static String searchCsvLine(String filename, String searchString,String rowname) throws IOException {
        String resultRow = null;
        BufferedReader br = new BufferedReader(new FileReader(filename));
        String line;
        int searchStringIndex=0;
        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");
//get index of searchString
            for (int i = 0; i < values.length; i++) {
                if(values[i].equalsIgnoreCase(searchString)){
                    searchStringIndex=i;
                    break;
                }
            }
//get required rowname  
            for (int i = 0; i < Integer.parseInt(rowname); i++) {
                line=br.readLine();
            }
//split the line found by rowname and get value as per searchString index (given column)    
            values = line.split(",");
            resultRow=values[searchStringIndex];
            break;
        }

        br.close();
        System.out.println(resultRow);
        return resultRow;
    }
}

推荐阅读