垂直写入列而不是水平写入

时间:2014-01-07 16:22:48

标签: java csv opencsv

我使用opencsv从多个csv表中获取值,将它们写入一个csv表。这就是我在做的事情:

//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);

}

正如您所看到的,我正在获取文件并将其内容写入列表(hugeList),然后将每个值映射到我正在写入新工作表的新数据数组中。问题是我连续获取数据而不是列中的数据: enter image description here

如何编写我的数据column-by-column?我的算法出了什么问题?

感谢您的回复!

1 个答案:

答案 0 :(得分:2)

这里有什么问题很简单:你必须把每个条目写成新行

E.g.:   writer.writeNext(data);

有关详细信息,请参阅下面的示例

我在列中的结果的方法

 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);
    }
}