2016-07-18 4 views
0
import java.io.IOException; 
import java.io.StringReader; 

import org.apache.commons.csv.CSVFormat; 
import org.apache.commons.csv.CSVParser; 

Apache CSV 파서로 간단한 CSV 파일을 구문 분석하려고합니다. 따옴표를 사용하지 않는 한 제대로 작동합니다. 내가 입력이 나에게 오류 제공Apache commons CSV : 인용 입력이 작동하지 않습니다.

"a";42 

에 견적을 추가하려고하면 다음과 같습니다

invalid char between encapsulated token and delimiter 

을 간단 전체 코드입니다 :

public class Test { 

    public static void main(String[] args) throws IOException { 
     String DATA = "\"a\";12"; 
     CSVParser csvParser =  
     CSVFormat.EXCEL 
      .withIgnoreEmptyLines() 
      .withIgnoreHeaderCase() 
      .withRecordSeparator('\n').withQuote('"') 
      .withEscape('\\').withRecordSeparator(';').withTrim() 
      .parse(new StringReader(DATA)); 
    } 

} 

는 단순히 수 없습니다 내가 코드에서 놓친 것을 찾아라.

답변

2

문제는 너무 간단해서 놓쳤습니다.

withDelimiter 대신 withRecordSeparator을 사용하여 필드 구분 기호를 설정했습니다. 내가 예상대로

작동 :

public class Test { 

    public static void main(String[] args) throws IOException { 
     String DATA = "\"a\";12"; 
     CSVParser csvParser =  
     CSVFormat.EXCEL 
      .withIgnoreEmptyLines() 
      .withIgnoreHeaderCase() 
      .withRecordSeparator('\n').withQuote('"') 
      .withEscape('\\').withDelimeter(';').withTrim() 
      .parse(new StringReader(DATA)); 
    } 

}