【问题标题】:create csv file by java [duplicate]通过java创建csv文件[重复]
【发布时间】:2013-10-18 21:23:49
【问题描述】:

我在尝试将数据插入 csv 文件时遇到由引号引起的问题。 我有两个元素:20" 和 BI。 跑完这句话:

writers[k].write("\"" + tablelist.get(k).get(i)[j] + "\",");

它们将显示为:

"20",","BI"

在 csv 文件中,它将在一个单元格中显示为 20",BI" 而不是两个单独的元素。

谁能给我建议如何解决这个问题?

【问题讨论】:

标签: java csv


【解决方案1】:

呃...使用opencsv,在任何情况下都不要尝试自己解析或编写CSV。有太多的边缘情况需要解决。如果你想追加,首先read the CSV in,然后将你的字符串数组添加到列表中,然后write it out。还有其他适用于 Java 的 CSV 库以类似的方式工作。

【讨论】:

【解决方案2】:

使用与" 不同的引号字符。您可以配置打开 csv 文件时将哪个字符视为引号。

不是这个

writers[k].write("\"" + tablelist.get(k).get(i)[j] + "\",");

添加一个引号字符,然后选择一个您不太可能像这样在数据中获取的字符

String quote = "|";
writers[k].write(quote + tablelist.get(k).get(i)[j] + quote +",");

然后,当您打开它时(取决于程序),您可以对其进行配置,以便将 | 用作引用

在 Libre Office 中,当您双击 csv 文件时它会询问您

在 MS Excel(取决于版本)中,您打开 excel 然后从文本导入,然后它应该给您选择的选项。

【讨论】:

  • 报价无法更改怎么办?它在我需要解析的文件中,每次出现时我都无法更改它们
  • 为什么不能更改报价?您只需在您的代码行中更改它们......writers[k].write("\"" + tablelist.get(k).get(i)[j] + "\",");
【解决方案3】:

RFC 4180 Common Format and MIME Type for Comma-Separated Values (CSV) Files

第 2.7 节:

如果使用双引号将字段括起来,则使用双引号 出现在字段内必须通过在它前面加上 另一个双引号。例如:

   "aaa","b""bb","ccc"

但正如其他人所提到的,最好使用为您处理这些细节的库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2021-10-06
    • 2011-03-19
    • 2018-03-17
    • 2016-03-01
    相关资源
    最近更新 更多