Прочитать конкретные данные, соответствующие строке и столбцу в CSV - PullRequest
0 голосов
/ 16 ноября 2018

Мне нужна помощь.Я хочу реализовать код, в котором я хочу прочитать данные из файла CSV.

Пример CSV-файла (details.csv):

идентификатор, имя, возраст

1, чч, 23

2, нит, 24

Я хочу создать такой метод в Java, чтобы читать этот CSV, что япередать имя листа, имя столбца и имя строки в качестве параметров.Где бы ни находилось совпадение этой комбинации, выбираются соответствующие данные.

Пример: - Я хочу передать 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;
}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Попробуйте ниже:

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;
    }
}
0 голосов
/ 16 ноября 2018

Вы должны проанализировать первую строку файла CSV, чтобы получить имена столбцов.

public class Test {

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

        // parse first line as column names
        String line = br.readLine();
        String[] columns = line.split(",");
        int columnIndex = -1;
        for (int i = 0; i < columns.length; i++) {
            if (columnName.equals(columns[i])) {
                columnIndex = i;
                break;
            }
        }

        // read lines to match row
        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");
            if (rowName.equals(values[0])) {
                // return value at columnIndex
                resultRow = values[columnIndex];
                break;
            }
        }
        br.close();
        return resultRow;
    }

    public static void main(String[] args) throws IOException {
        String name = searchCsvLine("details.cvs", "name", "1");
        System.out.println("name is " + name);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...