0

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

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

它们将显示为:

"20",","BI"

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

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

4

3 回答 3

4

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

于 2013-10-10T23:05:23.377 回答
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 然后从文本导入,然后它应该为您提供选择的选项。

于 2013-10-10T22:25:12.317 回答
1

RFC 4180 逗号分隔值 (CSV) 文件的通用格式和 MIME 类型

第 2.7 节:

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

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

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

于 2013-10-10T23:09:56.570 回答