我在 Java
中有 2D ListoflistList<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文件?
谢谢
答案 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());