如何只将列表中的第5个值写入csv

时间:2014-01-07 12:50:26

标签: java csv opencsv

我正在阅读带有opencsv图书馆的几张csv表。我正在hugeList = reader.readAll();中存储“读取”csv文件现在我只想在另一张表中以列方式写出这个巨大的csv表的第5个值。

我站在那一刻:

        //reading all entries in a huge list
        //-740 as it would take to much time to run it in "dev mode"
        for (int j = 0; j < (fileList.size() - 740); j++) { 
            String csvFile = "C:\\Users\\" + fileList.get(j);
            reader = new CSVReader(new FileReader(csvFile), ';');
            hugeList = reader.readAll();            

            List<String[]> data = new ArrayList<String[]>();
//          for(int m = 0; m < hugeList.size(); m++) {
//              String[] value = hugeList.get(m);
                data.add(hugeList.get(5));
//          }

            writer.writeAll(data);

        }

但是我不知道如何将它们写入另一列并且只取第5个值?

我非常感谢你的回答!

更新1

目标:我在hugeList中保存了一张表中的所有值。现在我想 只将第5列写入新表。

问题:此目标背后的逻辑。

更新2

enter image description here

这就是我现在的代码:

//reading all entries in a huge list
for (int j = 0; j < (fileList.size() - 740); j++) { 
    String csvFile = "C:\\" + fileList.get(j);
    reader = new CSVReader(new FileReader(csvFile), ';');
    hugeList = reader.readAll();            

    List<String[]> data = new ArrayList<String[]>();
    List<String> tmp= new ArrayList<String>();
     for(int m = 0; m < hugeList.size(); m++) {
              String[] values = hugeList.get(m);
              tmp.add(values[0]);       
       }
     data.add(tmp.toArray(new String[0]));


    writer.writeAll(data);

}

正如您所看到的,我仍然可以垂直获取数据......为什么?

1 个答案:

答案 0 :(得分:2)

我认为你已经走在正确的道路上了。

你有两种可能性。

1. data.add(hugeList.get(4));

2. for(int m = 0; m < hugeList.size(); m++) {
         if(m==4){
              String[] values = hugeList.get(m);
              data.add(values);
          break;
         }
    }

<强>更新
目标:我已经在hugeList中保存了一张表中的所有值。现在我想只将第5列写入新表。问题:这个目标背后的逻辑。

enter image description here 行方式结果的方法

List<String[]> data = new ArrayList<String[]>();
        List<String> tmp= new ArrayList<String>();
         for(int m = 0; m < hugeList.size(); m++) {
                  String[] values = hugeList.get(m);
                  tmp.add(values[4]);       
           }
         data.add(tmp.toArray(new String[0]));
        }

我在列中的结果的方法

 for (int j = 0; j < fileList.size(); j++) {
    String csvFile = readPath + fileList.get(j);
    System.out.println("Read:  " + csvFile);
    reader = new CSVReader(new FileReader(csvFile), ';');
    hugeList = reader.readAll();

    String[] data = new String[1];
    for (int m = 0; m < hugeList.size(); m++) {
        String[] values = hugeList.get(m);
        data[0] = values[0];
        writer.writeNext(data);
    }
}