Java OpenCSV新手:如何从特定单元格获取内容
我试图获取特定标题下的内容,并将其转换为字符串。我希望我的代码能够识别一个标题,并在标题下获取内容。基本上是在特定的单元格中获取信息。我做错了什么?我知道如何通过调用特定列来实现这一点,但现在我想知道如何通过使代码识别特定的头来实现这一点 编辑:我更新了我的代码,但仍然没有更改。。。帮忙Java OpenCSV新手:如何从特定单元格获取内容,java,csv,opencsv,Java,Csv,Opencsv,我试图获取特定标题下的内容,并将其转换为字符串。我希望我的代码能够识别一个标题,并在标题下获取内容。基本上是在特定的单元格中获取信息。我做错了什么?我知道如何通过调用特定列来实现这一点,但现在我想知道如何通过使代码识别特定的头来实现这一点 编辑:我更新了我的代码,但仍然没有更改。。。帮忙 ImageAnnotation PeserAnnotation1 = new ImageAnnotation (); String csvFilename = "C:/Users/Daniela/Doc
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("");
}
}
ImageAnnotation peseranotation1=新的ImageAnnotation();
字符串csvFilename=“C:/Users/Daniela/Documents/ISPY/205_4493_MR1_ACRIN_6657/E25008/peser_data.csv”//插入文件名和位置
CSVReader CSVReader=new CSVReader(new FileReader(csvFilename));
字符串[]headerLine=csvReader.readNext();
//启动imageannotation信息
对于(int i=0;i
CSV文件:
主ID、ISPY ID、日期、PE\U FTV205120720050819,8.7508545 我的代码和CSV文件都只是真实的示例。
目前,代码只是跳过“if”而直接转到“else” 您正在使用
==
来比较字符串。改用equals()
<代码>=测试两个表达式是否引用完全相同的对象。如果两个字符串包含相同的字符,则不会出现这种情况。您的代码实际上位于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");
}
}
为了解决这个问题,我在
if
语句之后插入了一个break
。没有它,代码将再次进入循环,输入else
子句,并用else
中的内容替换if
语句中的字符串 不要在for循环中创建一个新的CsvReader,重新使用已经打开的CsvReader,您可以从中获得标题行……我这样做最初是为了跳过第一行的标题,这样代码就可以获取下面几行中的内容。我删除了循环中的Csvreader,但结果似乎没有什么不同……然后你还有其他bug。在评论和我的答案中建议的更改之后,编辑您的问题并粘贴更新的代码。显示示例输入、您想要的输出和您得到的输出。
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