2016-07-24 2 views
0

중복 헤더가있는 CSV 파일을 처리해야하며 각 데이터는 3 개 열 (최소, 최대 및 평균)로되어 있지만 머리글은 각 열에 대해 동일합니다. 첫 번째 열은 분, 두 번째는 평균, 세 번째는 최대입니다.중복 열 헤더가있는 Apache CSV 파서

아파치 CSV 파서 예외 :

java.lang.IllegalArgumentException: The header contains a duplicate name: 

어떻게 중복 헤더를 받아들이는 파서를 구성 할 수 있습니다?

답변

3

CSVParser에는 중복 된 열 이름을 사용할 수 있는지 여부를 제어하는 ​​미리 정의 된 구성 매개 변수가 없습니다.

소스 코드를 보면 initializeHeader 메서드가 열 이름을 키와 열 인덱스로 갖는 Map을 값으로 생성한다는 것을 알 수 있습니다. 헤더 매핑을 사용하려면 열 이름이 고유해야합니다.

그러나, 용액이있다 :

는 CSV 파일의 첫 번째 행에 정의 된 컬럼 이름을 무시 CSVFormatdefine your column names manually 지정. CSVFormat documentation에서

:

정의 열 이름

쓰기 액세스 기록에 사용할 열 이름을 정의하려면 :

CSVFormat.EXCEL.withHeader("Col1", "Col2", "Col3"); 

가 호출 withHeader(String...)하자 사용 주어진 이름을 사용하여 CSVRecord에 값을 지정하고 CSV 소스가 계속 작동하지 않는다고 가정합니다. 열 이름을 정의하는 첫 번째 레코드. 그렇다면이 메타 데이터를 사용자의 이름으로 덮어 쓰고 withSkipHeaderRecord(boolean)true으로 호출하여 첫 ​​번째 레코드를 건너 뜁니다.

+0

감사합니다. –