2016-07-24 52 views
0

重複したヘッダーを持つCSVファイルを処理する必要があります。各データは3つの列(最小、最大、および平均)にありますが、ヘッダーは各列で同じです。最初の列は分、2番目は平均、3番目は最大です。重複列ヘッダーを持つApache CSVパーサー

ApacheのCSVパーサ例外:

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

にはどうすれば重複したヘッダを受け入れるようにパーサを設定することができますか?

答えて

3

CSVParserには、重複する列名が受け入れられるかどうかを制御する事前定義済みの構成パラメーターはありません。

ソースコードを見ると、initializeHeaderメソッドはMapを作成します。これはキーとして列名を持ち、列インデックスを値として持ちます。ヘッダー・マッピングを使用する場合は、列名が一意でなければなりません。

しかし、解決策がある:

は、CSVファイルの最初の行に定義されたカラム名を無視CSVFormat、及びdefine your column names manuallyを指定します。 CSVFormat documentationから

書き、あなたがアクセスレコードに使用する列名を定義するには、列名

の定義

withHeader(String...)みましょうあなたが使用を呼び出す
CSVFormat.EXCEL.withHeader("Col1", "Col2", "Col3"); 

与えられた名前はCSVRecordの値をアドレス指定し、あなたのCSVソースはcontカラム名も定義した最初のレコードです。そうであれば、このメタデータをあなたの名前で上書きしています。withSkipHeaderRecord(boolean)trueと呼んで最初のレコードをスキップする必要があります。

+0

いいね、ありがとう。 –

関連する問題