0

ヘッダーと特定の番号を含む CSV ファイルがあります。これらの数値を個別に抽出して AIM XML ファイルを作成する必要がありますが、それは重要ではありません。ヘッダーに基づいて数字を抽出するのに苦労しています。いろいろ試してみましたが、うまくいきませんでした。このコードを実行しようとすると (以下は単なるサンプルです)、決して終了しないようです。私は Java や OpenCSV の経験があまりないので、ごちゃごちゃしていることをお許しください。(午前2時でもあり、私の心は誤作動しています)

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import edu.stanford.hakan.aim3api.base.AimException;
import edu.stanford.hakan.aim3api.base.ImageAnnotation;
import edu.stanford.hakan.aim3api.usage.AnnotationBuilder;
import au.com.bytecode.opencsv.CSVReader;



public class CreateAIMFile {
public static void main(String[] args) throws IOException, FileNotFoundException,     AimException
{
    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 [] nextLine = csvReader.readNext();

    //start 
    for (int i = 0; i<50; i++){ //i<50 is a random number
        while (nextLine[i] != null){
            if (nextLine[i] == "CagridId") //customize name
            {
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ';', '\'', 1);
                Integer A = Integer.valueOf(nextLine[i]);
                PeserAnnotation1.setCagridId(A); 
            }
            else
            {
            PeserAnnotation1.setCagridId(0); 
            }
        }
    }
    for (int i = 0; i<50; i++){ 
        while (nextLine[i] != null){
            if (nextLine[i] == "PatientComment") //customize name
            {
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ';', '\'', 1);
                PeserAnnotation1.setComment(nextLine[i]); 
            }
        else
            {
                PeserAnnotation1.setComment("");
            }
        }
    }
AnnotationBuilder.saveToFile(PeserAnnotation1, "./AIMFileName.xml", "AIM_v3.xsd");     //customize name of XML file
    System.out.println(AnnotationBuilder.getAimXMLsaveResult());
}
}
4

2 に答える 2

0

csvReader.readNext(); を混乱させていると思います。csvReader.readAll(); で

これを試してください(コンパイルされていません!):

String headerLine = csvReader.readNext();

List numbersInHeader = new ArrayList();
for(int i = 0 ; i < headerLine.length ; i++){
    if(headerLine[i].equals("YouHeaderNameHere") || headerLine[i].equals("OtherNumberHeader")){
        numberInHeader.add(i);
    } 
}
String line[] = null;
while((line = csvReader.readNext()) != null){
    for(int i = 0 ; i < line.length ; i++){
        if(numbersInHeader.contains(i)){ 
            // This is a number do you work here

        }

    }
}

お役に立てれば。

于 2013-08-15T09:02:26.263 に答える