Java:2D列表到CSV

时间:2016-01-14 19:39:37

标签: java csv

我在 Java

中有 2D Listoflist
List<List<String>> listOflists

这是3个列表的列表:

List1 = {10,20,30,40}

List2 = {Accouting, Research, Sales, Operations}

List3 = {122,123,124,125}

我想将其转换为由“,”分隔的CSV文件,但每个列表对应一列如下:

10,Accounting,122
20,Research,124
30,Sales,123
40,Operations,167 

实际上我以后会使用这个csv文件写入mysql。

现在我使用HSSFWorkbook(),然后将其设为excel,然后将excel转换为csv然后将其导出到mysql,最后删除excel和csv。我认为这不是有效的。

那么如何将List<List<String>>转换为“,”分隔的CSV文件?

谢谢

2 个答案:

答案 0 :(得分:2)

int innerListSize = listOfLists.get(0).size();

for (i = 0; i < innerListSize; i++) {
    for (List<String> innerList : listOfLists) {
        Files.write(innerList.get(i) + ",");
    }
    Files.write('\n');
}

请注意,每行末尾都会有一个逗号。可以通过更改优化的for循环来删除它以使用迭代器,而不是在iterator.hasNext()为false时将逗号写入文件。

答案 1 :(得分:1)

final String lineSeparator = System.getProperty("line.separator");

// setup the header line
StringBuilder sb = new StringBuilder("your,header,line,stuff");
sb.append(lineSeparator);

// now append your data in a loop
for (i = 0; i < list1.size(); i++) {
    sb.append(list1.get(i));
    sb.append(",");
    sb.append(list2.get(i));
    sb.append(",");
    sb.append(list3.get(i));
    sb.append(lineSeparator);
}

// now write to file
Files.write(Paths.get("path/to/where/you/want/output.csv"), sb.toString().getBytes());