我的csv有这个问题,我有一个带有String值的数组,我想把它放在一个csv文件中,但我也希望每个元素都在一个不同的列中。
我尝试了这段代码(不使用外部框架)并且它不起作用,元素在同一列中:
输出是:
first0first1first2
second0second1second2
third0third1third2
BufferedWriter br = new BufferedWriter(new FileWriter("C:/Users/example.csv"));
StringBuilder sb = new StringBuilder();
for (int i=0; i < id.length; i++) {
sb.append(id[i] + "\t");
sb.append(wec[i] + "\t");
sb.append("\n");
}
br.write(sb.toString());
br.close();
}
我也试过这里的例子: example1,但没有任何工作......这里的输出是: third0, third1 thir2,
我想要的输出是:
Colum1 Colum2 Colum3
first0 first1 first2
second0 second1 second2
第三名第三名第三名第二名
我正在使用Java 7和Maven,因此使用外部libreries不是问题。
我希望我的所有元素都按列分隔,而不是“,”或其他符号。 这里是预期的输出: expected output
答案 0 :(得分:1)
使用此代码:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append("test0\t");
sb.append("test1\t");
sb.append("test2\n");
}
System.out.println(sb.toString());
我得到了输出
test0 test1 test2
test0 test1 test2
test0 test1 test2
test0 test1 test2
test0 test1 test2
由于您的代码似乎是正确的,我们需要更多信息。要获得正确的csv格式,请将每个\t
替换为,
答案 1 :(得分:1)
您可以尝试apache commons-csv:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.1</version>
</dependency>
然后csv打印变得非常简单:
PrintStream ps = new PrintStream(new FileOutputStream("C:/Users/example.csv")); List<String> record = new ArrayList<>();
// ...
for (int i=0; i < id.length; i++) {
record.add(id[i] + "\t");
record.add(wec[i] + "\t");
}
try (CSVPrinter csvPrinter = new CSVPrinter(builder, CSVFormat.EXCEL)) {
csvPrinter.printRecord(record);
}
这将解决csv的所有怪癖,比如在字段中包含逗号。
或者,您可以手动添加逗号:
for (int i=0; i < id.length; i++) {
sb.append(id[i] + "\t,"); // comma after tab
sb.append(wec[i] + "\t,"); // comma after tab
sb.append("\n");
}
<强>更新强>