csv writer将数组中的所有逗号分隔

时间:2019-04-29 13:45:42

标签: java csv

我有以下长度为7的String []。

["column1Item", "column2Item", "column3Item", "column4Item", "column5Item", "column6Item,column6Item", "column7Item,column7Item"]

第六个元素是

"column6Item,column6Item"

第7个元素是

 "column7Item,column7Item"

当我将其写入csv时,我得到8列而不是6列

column1Item,column2Item,column3Item,column4Item,column5Item,column5Item,column6Item,column6Item

这是我目前写给csv的方式:

CSVWriter writer = new CSVWriter(new FileWriter("output.csv"),',',CSVWriter.NO_QUOTE_CHARACTER);

writer.writeAll(newCsvBody);
writer.flush();
writer.close();

这种方法有什么问题?

3 个答案:

答案 0 :(得分:4)

您的csv分隔符也出现在您要编写的元素内。使用不同的csv分隔符(例如,分号),或在'column6Item,column6Item'和'column7Item,column7Item'元素内转义逗号。

答案 1 :(得分:1)

使用下面的代码,我得到7列。

    public static void main(String[] args) throws IOException {

         String[] ss =  {"column1Item", "column2Item", "column3Item", "column4Item", "column5Item", "column6Item,column6Item", "column7Item,column7Item"};
         FileOutputStream fos = new FileOutputStream("output.csv"); 
         OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
         CSVWriter writer = new CSVWriter(osw);
         writer.writeNext(ss);
         writer.close();
         osw.close();
    }

答案 2 :(得分:-1)

由于逗号是内部值,因此您应该尝试使用其他分隔符,例如管道符号(|)。