2013-10-10 3 views
0

데이터를 csv 파일에 삽입하는 동안 인용 부호로 인해 문제가 있습니다. 나는 두 가지 요소가있다 : 20 "및 BI 이 문장을 실행 한 후 :.자바로 csv 파일을 만듭니다.

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

그들은으로 제시 될 것이다 : CSV 파일에

"20",","BI" 

를, 그것은 셀에 제공 될 것이다 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

사용에 다른 한때를 다음 문자 ". csv 파일을 열 때 따옴표로 처리 할 문자를 구성 할 수 있습니다. 대신이

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

견적 문자를 추가하고이 (프로그램에 따라) 열 때 다음 중 하나가 당신이 그런 다음이

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

같은 데이터를 얻을 가능성이 없습니다 선택 당신은 |가 따옴표로 사용되도록 구성 할 수 있습니다

리브레 사무실에서 CSV 파일을 더블 클릭하면 묻습니다.

MS Excel (버전에 따라 다름)에서 Excel을 열고 텍스트에서 가져 오기를 선택하면 선택할 수있는 옵션이 제공됩니다.

+1

견적을 변경할 수없는 경우 어떻게해야합니까? 내가 파싱해야하는 파일에 있으며, 나타날 때마다 변경할 수 없습니다. – WangMango

+0

왜 견적을 변경할 수 없습니까? 당신은 단지 코드의 라인에서 그것들을 바꾼다. "writers [k] .write ("tablelist.get (k) .get (i) [j] + "\", "); ' –

1

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

2.7 절 :

따옴표는 다음 따옴표를 두 번 필드 내에서 나오는 또 다른 큰 따옴표로 이전하여 이스케이프해야합니다 필드를 둘러싸는 데 사용하는 경우. 예를 들면 :

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

그러나 다른 언급, 당신을 위해 이러한 세부 사항을 처리하는 라이브러리를 사용하는 것이 좋을 것이다.

관련 문제