无引号的JAVA CSV写入空间

无引号的JAVA CSV写入空间,java,csv,apache-commons,spaces,Java,Csv,Apache Commons,Spaces,我正在使用ApacheCommonsCSV库来编写CSV文件 提供给我的样品有一个奇怪的图案 预期样本输出: 姓名及名称、电话、行动、日期 “John Doe,警官”,正在调查中,2017年6月8日 杰克,+123-4567,虚假指控,2017年6月4日 可以看到,“名称和名称”列的值可以用逗号表示。所以他们需要被引用。 但是,有些值中有空格,例如phone no,它只能是空格,或者Action列,其中的值可以包含空格(中间或结尾) 现在,当我使用ApacheCommons库编写CSV时,我

我正在使用ApacheCommonsCSV库来编写CSV文件

提供给我的样品有一个奇怪的图案

预期样本输出:

  • 姓名及名称、电话、行动、日期
  • “John Doe,警官”,正在调查中,2017年6月8日
  • 杰克,+123-4567,虚假指控,2017年6月4日
可以看到,“名称和名称”列的值可以用逗号表示。所以他们需要被引用。 但是,有些值中有空格,例如phone no,它只能是空格,或者Action列,其中的值可以包含空格(中间或结尾)

现在,当我使用ApacheCommons库编写CSV时,我在CSVPrinter类中使用了以下CSVFormat

此配置提供了与示例类似的最接近的输出。但是,即使没有逗号,也会引用空格或带有尾随空格的值

我的输出:

  • 姓名及名称、电话、行动、日期
  • “John Doe,警官”,正在调查中,2017年6月8日
  • 杰克,+123-4567,“虚假指控”,2017年6月4日
我需要的是,当末尾只有空格或空格,并且值没有逗号时,引号就不会出现

Apache Commons中是否有我缺少的配置?或者是否有其他CSV库具有提供此输出的格式?

满足您的要求。请尝试以下代码:

    CsvWriterSettings settings = Csv.writeExcel();
    settings.trimValues(false); //values are trimmed by default
    settings.setHeaders("Name with designation","Phone","Action","Date");
    settings.setHeaderWritingEnabled(true);

    StringWriter output = new StringWriter();
    CsvWriter writer = new CsvWriter(output, settings);

    writer.writeRow("John Doe,Officer"," ","Under investigation","8-Jun-2017");
    writer.writeRow("Jack","+123-4567","False Allegation ","4-Jun-2017");

    writer.close();

    System.out.println(output);
输出将是:

Name with designation,Phone,Action,Date
"John Doe,Officer", ,Under investigation,8-Jun-2017
Jack,+123-4567,False Allegation ,4-Jun-2017
希望能有帮助

免责声明:我是这个图书馆的作者。它是开源和免费的(Apache 2.0许可证)

您可以使用。接下来是

写道:

 Aa, ," John ""Doe""","Comma,",test 
Maven依赖性:

<!-- https://mvnrepository.com/artifact/net.sf.supercsv/super-csv -->
<dependency>
    <groupId>net.sf.supercsv</groupId>
    <artifactId>super-csv</artifactId>
    <version>2.4.0</version>
</dependency>

net.sf.sv
超级csv
2.4.0

这就是我在发布此问题后使用的库。虽然ApacheCommons更易于使用其包装器调用,但SuperCSV也完成了这项工作。发现apache commons中有一个代码,只要最后一个字符代码是Cool lib,它就会在值周围加引号!我也会尝试一下:)……在发布了这个问题之后,我最终使用了apache commons,这也达到了目的。**最终使用超级csvThanks进行了尝试。如果性能成为一个问题,那么请再次查看它。下面是许多不同解析器之间的比较:
 Aa, ," John ""Doe""","Comma,",test 
<!-- https://mvnrepository.com/artifact/net.sf.supercsv/super-csv -->
<dependency>
    <groupId>net.sf.supercsv</groupId>
    <artifactId>super-csv</artifactId>
    <version>2.4.0</version>
</dependency>