2013-09-27 5 views
2

java에서 SuperCSV를 사용하여 CSV 파일을 읽습니다. 날짜가 포함 된 열이 있지만 레코드가 채워지지 않아서 선택적으로 설정할 수 있습니다. 내 CellProcessor에서 나는 "... SuperCsvCellProcessorException : ''날짜로 구문 분석 할 수 없습니다."SuperCSV에서 선택적 ParseDate SuperCsvCellProcessorException에 대한 해결 방법이 있습니까?

..., 
    new Optional(new ParseDate("MM/dd/yyyy",true)), 
    ... 

ParseDate가 반환 빈 셀을 발견으로 필드를 정의

이 상황에서 parseDate를 계속 처리하려면 어떻게해야합니까?

답변

2

수퍼 CSV가 CSV를 읽을 때 빈 열 (즉, 빈 문자열) 만 매핑되며 공백으로 읽습니다. 이는 공백이 CSV mimetype 사양 인 RFC4180에서 중요하기 때문입니다.

그래서 Optional은 공백으로 다음 프로세서를 무시하지 않습니다. 이 날짜로 구문 분석하려고 널합니다 (CSV에서 즉 빈 문자열) 또는 단일 공간, 바이 패스가 발생하는 경우가 null를 반환합니다

new Optional(new Token(" ", null, new ParseDate("MM/dd/yyyy",true))); 

: 대신이 프로세서 설정을 사용할 수 있습니다.

환경 설정을 사용하여 surroundingSpacesNeedQuotes 환경 설정을 활성화 할 수도 있지만 앞뒤로 공백이 생길 수 있습니다. 원하지 않을 수도 있습니다.