csv java上的列的单独元素
我有我的csv这个问题,我有一个字符串值的数组,我想把它放在一个csv文件,但我也希望每个元素都在一个不同的列。 我试试这个代码(不使用外部框架)和它不工作,该元素在同一个科拉姆: 输出:
first0first1first2
second0second1second2
third0third1third2csv java上的列的单独元素
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秒2
third0 third1 third2
我使用的Java 7和Maven,所以这是不问题tu使用外部libreries。
我希望我的所有元素都按列分隔,而不是“,”或其他符号。 这里预期输出: expected output
更换每\t
你可以尝试阿帕奇公地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");
}
UPDATE
新的CSVPrinter(builder - > builder是我的StringBuilder sb吗?它不起作用........我希望我的所有元素都不一样列,像excel,1元素=第一行,第一列,2元素=第一行,第二列.... 你的代码的输出是我的元素都在1列和1行 –
你用什么工具通常你可以配置分隔字符 我已经在生产中有一些'CSVPrinter',它可以很好地工作,你能指定更准确的输出结果吗?不幸的是,csv有很多变种,参见[rfc](https://tools.ietf.org/html/rfc4180) –
我用excel打开csv文件 因为我很伤心,我希望每个元素都在一个不同的柱子里! 例如,我的元素是:a,b,c,d,e。预期的输出是:a行1列colum1,行1列b,列1行colum3,行1列d,列4,列e列1列colum5。 这样的: https://docs.google.com/spreadsheets/d/1ZW-4oSt8BgcRc_j39eNMghIbci_FVgP-_ZgIi2aO2zU/edit?usp=sharing –
与此代码:
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格式,具有,
随着你的代码,在我的CSV文件的输出是这样的:第一行:“test0test1test2” 第二行:“test0test1test2”等等.... –
@LizLamperouge再次:**你在哪里得到这个输出?你在哪个编辑器或程序中打开csv文件? – IQV
在我的csv文件,如果我试图用记事本打开它,它是用Excel –
画面** **哪里没有你得到没有标签的错误输出?你想要一个由空白分隔的输出吗?然后用''替换'\ t'。或者你想要** C ** omma ** S ** eparated ** V ** alues作为输出?然后用','或';'替换'\ t'。 –
IQV