2016-07-24 11 views
0

我需要處理具有重複標題的CSV文件,每個數據分爲三列(最小值,最大值和平均值),但每個列的標題相同。第一列是最小值,第二列是平均值,第三列是最大值。重複列標題的Apache CSV分析器

阿帕奇CSV解析器拋出:

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

如何配置解析器接受重複的標題?

回答

3

CSVParser中沒有預定義的配置參數,用於控制重複的列名是否可接受。

查看源代碼顯示initializeHeader方法創建Map,該列將具有列名作爲鍵和列索引作爲值。如果您想使用標題映射,則列名稱必須是唯一的。

然而,有一個解決方案:

指定CSVFormat忽略CSV文件的第一行上所定義的列名和define your column names manually

CSVFormat documentation

定義的列名

要定義你要使用訪問記錄的列名,寫:

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

調用withHeader(String...)讓我們使用給定名稱以解決CSVRecord中的值,並假定您的CSV源不會連續在第一個記錄中也定義了列名。如果是這樣,那麼你用你的名字覆蓋這個元數據,你應該通過調用withSkipHeaderRecord(boolean)true來跳過第一條記錄。

+0

不錯,謝謝。 –