OpenCSV新手:如何从特定细胞中获取内容

时间:2013-08-18 03:17:07

标签: java csv opencsv

我试图获取特定标题下的内容并将其转换为字符串。我希望我的代码识别标题并获取其下的内容。基本上获取特定单元格中的信息。我究竟做错了什么?我知道如何通过调用特定的列来实现这一点,但现在我想知道如何通过使代码识别特定的标题来做到这一点。

编辑:我更新了我的代码,但仍然没有改变...帮助?

ImageAnnotation PeserAnnotation1 = new ImageAnnotation ();
    String csvFilename = "C:/Users/Daniela/Documents/ISPY/205_4493_MR1_ACRIN_6657/E25008/peser_data.csv"; //Insert file name and location
    CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
    String [] headerLine = csvReader.readNext();

    //start imageannotation info
    for (int i = 0; i < headerLine.length; i++){
            if (headerLine[i].equals("PRIMARY_ID")) //customize name
            {
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1);
                String [] nextLine = csvreader.readNext();
                PeserAnnotation1.setPRIMARY_ID(nextLine[i]); 
            }
            else
            {
                PeserAnnotation1.setPRIMARY_ID(""); 
            }
    }
    for (int i = 0; i < headerLine.length; i++){    
            if (headerLine[i].equals("ISPY_ID")) //customize name
            {
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1);
                String [] nextLine = csvreader.readNext();
                PeserAnnotation1.setISPY_ID(nextLine[i]); 
            }
        else
            {
                PeserAnnotation1.setISPY_ID("");
            }
    }

CSV文件:

  

PRIMARY_ID,ISPY_ID,DATE,PE_FTV
    205,1207,20050819,8.7508545

我的代码和CSV文件都只是真实的样本。 目前,代码只是跳过&#34; if&#34;并直接进入&#34;否则&#34;。

3 个答案:

答案 0 :(得分:0)

您正在使用==来比较字符串。请改用equals()==测试两个表达式是否引用完全相同的对象。如果两个字符串包含相同的字符,则不会。

答案 1 :(得分:0)

您的代码实际上属于if条件。

for (int i = 0; i < headerLine.length; i++){
            if (headerLine[i].equals("PRIMARY_ID")) //customize name
            {
                System.out.println("inside PRIMARY_ID IF");
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1);
                String [] nextLine = csvreader.readNext();

            }
            else
            {
                System.out.println("inside PRIMARY_ID ELSE");
            }
    }
    for (int i = 0; i < headerLine.length; i++){    
            if (headerLine[i].equals("ISPY_ID")) //customize name
            {
                System.out.println("inside ISPY_ID IF");
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1);
                String [] nextLine = csvreader.readNext();

            }
        else
            {
            System.out.println("inside ISPY_ID ELSE");
            }
    }

给我以下输出

inside PRIMARY_ID IF
inside PRIMARY_ID ELSE
inside PRIMARY_ID ELSE
inside PRIMARY_ID ELSE
inside ISPY_ID ELSE
inside ISPY_ID IF
inside ISPY_ID ELSE
inside ISPY_ID ELSE

答案 2 :(得分:0)

要解决此问题,我在break语句后插入了if。没有它,代码将再次进入循环,输入else子句,并将if语句中的字符串替换为else中的内容。