2013-10-10 139 views
0

我正面临着一个由引号引起的问题,同时试图将数据插入到csv文件中。 我有两个要素:20" 和BI 通过这句话运行后:由java创建csv文件

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

他们会被显示为:

"20",","BI" 

CSV文件,将它在细胞呈现20" BI”,而不是两个独立的元素。

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

+6

为什么不使用一些CSV库(例如http://supercsv.sourceforge.net/)? –

回答

4

呃...使用opencsv,在任何情况下都不要试图自己解析或编写CSV。有太多的边缘案例,这是处理。如果要追加,请首先输入read the CSV in,然后将字符串数组添加到列表中,并将write it out添加到列表中。还有其他用于Java的CSV库可以以类似的方式工作。

+0

我对Maven或pom文件一无所知。有没有关于如何构建opencsv.jar的文档? – Daniel

+1

http://maven.apache.org/run-maven/index.html#Quick_Start首次在Google上遭遇... – hd1

2

使用不同的曲ote字符然后"。您可以在打开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,然后从文本导入,然后它应该给你选择然后。

+1

如果报价无法更改会怎么样?它在我需要解析的文件中,并且每次出现时都无法更改它们 – WangMango

+0

为什么报价无法更改?您只需在您的代码行中更改它们....'writers [k] .write(“\”“+ tablelist.get(k).get(i)[j] +”\“,”);' –