【问题标题】:Including comma in CSV file在 CSV 文件中包含逗号
【发布时间】:2016-12-14 00:42:26
【问题描述】:

我目前正在导入 CSV 文件中的数据。 我一直在决定一个需要添加到逗号分隔字段的变量。下面是数据——

 "acNumber","Date","Code"
  12332,123  09/12/2012 1231

这是所需的格式。它实际上是如何显示的

  "acNumber","Date","Code"
  12332        123   09/12/2012 ...

发送的实际数据是一个字符串 & 格式如下 -

"12332,13321","08/08/2016","1234"

我尝试了以下可能的解决方案 -

1) 按照建议 here 将我的代码用引号括起来

""12332,13321""

我添加了两个双引号,因为该值已经包含在引号中。我也尝试过使用单双引号。

2) 在最终输出字符串的逗号前使用转义符(“\”)

 "12332\,13321"

我用谷歌搜索了它,但仍然没有找到任何解决方案。请帮助。

【问题讨论】:

  • Naren 您是在电子表格中打开此 CSV。如果你这样做了,你的数据周围的“”就会消失。你能在notepad++之类的文本处理器上打开CSV,看看你是否有引号?
  • "12332,13321","08/08/2016","1234" 是正确的格式 - en.wikipedia.org/wiki/Comma-separated_values
  • 值周围的引号就足够了。 (当然,在字符串文字中,引号必须被转义。)您可以尝试使用制表符\t 作为分隔符。也许显示代码。
  • @RamachandranGA 我用记事本++打开了它。它有引号
  • @IVOGELOV 是的。这也是我想要的格式

标签: java csv export-to-excel export-to-csv


【解决方案1】:

我把它修好了。

在我的领域前忽略“=”是我的愚蠢。 我试图找到解决方案而不考虑它。后来我认为它是我价值的一部分,并开始知道为什么要使用它。找到解决方案here。我将值重新格式化如下 -

"=""432234,23423"""

【讨论】:

    【解决方案2】:

    这可能不是您要寻找的答案。但是,我建议使用库来编写 csv,例如来自apache commons 的那个。它具有默认的CSVFormat-s,例如一个为Excel。这个库是非常可配置的,因此定制它相对容易。

    一般来说,我建议使用 3rd 方库来完成常见任务。

    这是一段关于如何使用 apache commons csv lib 的代码 sn-p:

        List<String> record = Arrays.asList("acNumber","Date","Code");
        StringBuilder builder = new StringBuilder();
        try (CSVPrinter csvPrinter = new CSVPrinter(builder, CSVFormat.EXCEL)) {
            csvPrinter.printRecord(record);
        }
    

    【讨论】:

    • 谢谢,我已经解决了。我忽略了'='。 :(
    【解决方案3】:

    刚刚试过

    a) 用 """ 括起来似乎可行。您可以在代码中附加 """,它应该可以使用了

    编辑:我的错,刚刚看到 Nicolos 发布了相同的答案。他是对的

    【讨论】:

    • 使用 """12332""","""13321""" 后,我在两个不同的单元格中获取数据,分别为 "12332" 和 "13321"
    • 谢谢,我已经解决了。
    【解决方案4】:

    如果您想转义分隔符(此处是逗号),您应该将内容放在双引号之间,因此如果您有 12332,123,您应该将 "12332,123" 放入您的 CSV 文件中。

    如果你想在双引号之间转义一个内容,你已经把它放在两个新的双引号之间,总共给出三个双引号,所以如果你有"12332,13321",你应该把"""12332,13321"""

    【讨论】:

    • 嗨 nicolas,当我使用 """12332,13321""" 作为输入时,我在两个不同的单元格中得到 ="""12332 & 13321"""。
    • 你从哪里得到它?在excel中?
    • 我可以在 Excel 和 Libre Office 上成功导入它(“12332,13321”仅在一个单元格中)。您使用哪种软件来导入 CSV 文件?
    • 谢谢,我已经解决了。我忽略了'='。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多