如何使用java使用标头读取csv文件?

时间:2014-01-15 06:06:45

标签: java csv

我有一个csv文件,其中包含5个标题字段,如field1,field2,field3,field4,field5。 该文件包含不同用户的此标头的数据。 有些列可能包含空值,因为只有三列是强制性的。

我想通过指定其标题来读取列,例如,如果我指定了field1和field3,那么只读取这些列的值。

我尝试使用opencsv来执行此操作并阅读opencsv的所有功能。 我也试过CSVReader。

这是我的代码:

public void startScanFile(){
String mydemofile=pathtofile;
BufferedReader br =null;
try {
  System.out.println("\nEnter the column number that contains ip : ");
  br = new BufferedReader(new InputStreamReader(System.in));
  ipcolumn = Integer.parseInt(br.readLine());
      System.out.println("\nEnter the column number that contains username : ");
  br = new BufferedReader(new InputStreamReader(System.in));
  usercolumn = Integer.parseInt(br.readLine());
  System.out.println("\n Enter the column number that contains password");
  br = new BufferedReader(new InputStreamReader(System.in));
  passcolumn = Integer.parseInt(br.readLine());
    }catch(Exception e){
}
try {
    CSVReader csvReader = new CSVReader(new FileReader(mydemofile));
    String[] row;
    while ((row = csvReader.readNext())!=null){
    System.out.println("Col1 is is : " + row[1]);
    System.out.println("Col3 is : " + row[3]);
    System.out.println("Col4 is : " + row[4]);
}
} catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
} catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}

}

如何只读取指定标题的值?

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

答案 2 :(得分:1)

我可以推荐以下csv库。很好。检查下面的url,其中包含如何使用标头获取csv数据的示例,您还可以验证数据。

http://supercsv.sourceforge.net/examples_reading.html