0
我需要處理具有重複標題的CSV文件,每個數據分爲三列(最小值,最大值和平均值),但每個列的標題相同。第一列是最小值,第二列是平均值,第三列是最大值。重複列標題的Apache CSV分析器
阿帕奇CSV解析器拋出:
java.lang.IllegalArgumentException: The header contains a duplicate name:
如何配置解析器接受重複的標題?
我需要處理具有重複標題的CSV文件,每個數據分爲三列(最小值,最大值和平均值),但每個列的標題相同。第一列是最小值,第二列是平均值,第三列是最大值。重複列標題的Apache CSV分析器
阿帕奇CSV解析器拋出:
java.lang.IllegalArgumentException: The header contains a duplicate name:
如何配置解析器接受重複的標題?
CSVParser
中沒有預定義的配置參數,用於控制重複的列名是否可接受。
查看源代碼顯示initializeHeader
方法創建Map
,該列將具有列名作爲鍵和列索引作爲值。如果您想使用標題映射,則列名稱必須是唯一的。
然而,有一個解決方案:
指定CSVFormat
忽略CSV文件的第一行上所定義的列名和define your column names manually。
定義的列名
要定義你要使用訪問記錄的列名,寫:
CSVFormat.EXCEL.withHeader("Col1", "Col2", "Col3");
調用
withHeader(String...)
讓我們使用給定名稱以解決CSVRecord
中的值,並假定您的CSV源不會連續在第一個記錄中也定義了列名。如果是這樣,那麼你用你的名字覆蓋這個元數據,你應該通過調用withSkipHeaderRecord(boolean)
和true
來跳過第一條記錄。
不錯,謝謝。 –