klo*_*onq 3 csv apache-commons
我需要处理具有重复标题的CSV文件,每个数据分为三列(min,max和avg),但每列的标题相同.第一列是min,第二列是average,第三列是max.
Apache CSV解析器抛出:
java.lang.IllegalArgumentException: The header contains a duplicate name:
Run Code Online (Sandbox Code Playgroud)
如何配置解析器以接受重复的标头?
没有预定义的配置参数CSVParser控制是否可以接受重复的列名称.
查看源代码显示该initializeHeader方法创建一个Map将列名作为键,列索引作为值.如果要使用标头映射,则列名必须是唯一的.
但是,有一个解决方案:
指定CSVFormat忽略CSV文件第一行中定义的列名称,并手动定义列名称.
定义列名称
要定义要用于访问记录的列名,请写入:
Run Code Online (Sandbox Code Playgroud)CSVFormat.EXCEL.withHeader("Col1", "Col2", "Col3");调用
withHeader(String...)let让您使用给定的名称来寻址a中的值CSVRecord,并假设您的CSV源不包含也定义列名的第一个记录.如果确实如此,那么你将覆盖你的名字该元数据,你应该通过调用跳过第一个记录withSkipHeaderRecord(boolean)用true.