csv java上的列的单独元素

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

+0

画面** **哪里没有你得到没有标签的错误输出?你想要一个由空白分隔的输出吗?然后用''替换'\ t'。或者你想要** C ** omma ** S ** eparated ** V ** alues作为输出?然后用','或';'替换'\ t'。 – IQV

更换每\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

Excel中,您可以选择分隔符,请参见下面 enter image description here

+0

新的CSVPrinter(builder - > builder是我的StringBuilder sb吗?它不起作用........我希望我的所有元素都不一样列,像excel,1元素=第一行,第一列,2元素=第一行,第二列.... 你的代码的输出是我的元素都在1列和1行 –

+0

你用什么工具通常你可以配置分隔字符 我已经在生产中有一些'CSVPrinter',它可以很好地工作,你能指定更准确的输出结果吗?不幸的是,csv有很多变种,参见[rfc](https://tools.ietf.org/html/rfc4180) –

+0

我用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格式,具有,

+0

随着你的代码,在我的CSV文件的输出是这样的:第一行:“test0test1test2” 第二行:“test0test1test2”等等.... –

+0

@LizLamperouge再次:**你在哪里得到这个输出?你在哪个编辑器或程序中打开csv文件? – IQV

+0

在我的csv文件,如果我试图用记事本打开它,它是用Excel –