生成的 CSV 文件中不需要的双引号

新手上路,请多包涵

我使用下面的 Java 代码创建了一个 CSV 文件:

 String csv = rs.getString("UPLOAD_FOLDER_PATH")+".csv";
CSVWriter writer = new CSVWriter(new FileWriter(csv));
String [] filevalues = new String[filevaluesarray.size()];

filevalues=filevaluesarray.toArray(filevalues);

writer.writeNext(filevalues);

writer.close();

我正在获取 CSV 文件,但文件的内容包含不需要的双引号。

例如。 “ABC”、“123”、“KDNJ”

我不知道从哪里添加这些双引号。

原文由 Edward 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.2k
2 个回答

这对我有用

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

请参阅 CSVWriter javadoc

原文由 Shamis Shukoor 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可能应该澄清“不需要的”引号的含义。

  1. 我不希望它引用 _所有内容_,只引用包含嵌入式逗号、引号和换行符的字段(引用所有内容是不必要的,并且会使我的文件更大),或者

  2. 我不想引用任何内容,并且我知道如果我的 CSV 包含嵌入的逗号、引号和换行符,它将无效

如果它是第一个选项,那么 opencsv 不支持这个 - 它要么引用所有内容,要么什么都不引用。如果您想要一个只在必要时引用的开源 CSV 库(如果需要,也 可以引用所有内容),请查看 Super CSV

如果是第二个选项,则使用 Sheldon 的回答,但请注意,如果您的 CSV 包含嵌入的逗号、引号和换行符,则该 CSV 文件将无效。

例如,如果我正在阅读您的 CSV 文件,我怎么知道以下实际上只是一个包含 2 个字段的记录?

 P Sherman, 42 Wallaby Way,
Sydney, AUSTRALIA

而如果它被正确引用那将是显而易见的,即

P Sherman, "42 Wallaby Way,
Sydney, AUSTRALIA"

仅供参考,这里是与 RFC4180 (CSV 的 MIME 类型定义)中的引用相关的规则。

5 每个字段可以用双引号括起来,也可以不用双引号括起来(但是某些程序,例如 Microsoft Excel,根本不使用双引号)。如果字段未用双引号括起来,则双引号可能不会出现在字段内。例如:

    "aaa","bbb","ccc" CRLF
   zzz,yyy,xxx

6 包含换行符 (CRLF)、双引号和逗号的字段应包含在双引号中。例如:

    "aaa","b CRLF
   bb","ccc" CRLF
   zzz,yyy,xxx

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

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

原文由 James Bassett 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题