我使用开放式csv读取只有2列的CSV,例如:

"valueA1","valueB of A1"
,"valueB of A1"
,"valueB of A1"
,"valueB of A1"
"valueA2","valueB of A2"
,"valueB of A2"
,"valueB of A2"
,"valueB of A2"


到目前为止,一切还在进行中。
当B列上的某些值带有某些字符时,我遇到了麻烦
例:

"valueA1","va"lueB" of A1"
,"valueB of A1"
,"valueB of A1"
,"valueB of A1"
"valueA2","valueB of A2"
,"valueB of A2"
,"valueB of A2"
,"valueB of A2"


当我的列B带有类似“”,甚至在某些情况下为a时:我打开的csv丢失了所有格式,而不是说我的下一行包含2个值,它向我展示了诸如36、48之类的疯狂内容,并且丢失了大量内容因此。

如何指定这些值在B列之内,并且不假定h需要创建新列?

我正在使用简单的构造函数

reader = new CSVReader(new FileReader(arquivo));


通过研究,我发现有些人说要使用其他构造函数,

reader = new CSVReader(new FileReader(arquivo), ',','"');


但是结果是一样的,因为构造函数只接受char我不能做的“,”

最佳答案

CSV没有正式的标准,但有一个非正式的标准,您显示的示例不符合该标准。包含双引号字符的值应加引号,并且值内的双引号字符应加倍。

valueA1,"va""lueB"" of A1"


(在此示例中,允许但不要求在“ valueA1”周围加上双引号。)由于您是自己创建CSV文件的,因此应从XLS文件中解决此问题。

如果另存为“ CSV(MS-DOS)(* .csv)”,则Excel 2007可以正确执行此操作。我记得较早版本的Excel有一个CSV选项屏幕,您可能需要使用它。

关于java - opencsv,不能将值与“,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26384257/

10-17 03:12