当前位置:  开发笔记 > 运维 > 正文

具有重复列标题的Apache CSV解析器

如何解决《具有重复列标题的ApacheCSV解析器》经验,为你挑选了1个好方法。

我需要处理具有重复标题的CSV文件,每个数据分为三列(min,max和avg),但每列的标题相同.第一列是min,第二列是average,第三列是max.

Apache CSV解析器抛出:

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

如何配置解析器以接受重复的标头?



1> Matthias Wie..:

没有预定义的配置参数CSVParser控制是否可以接受重复的列名称.

查看源代码显示该initializeHeader方法创建一个Map将列名作为键,列索引作为值.如果要使用标头映射,则列名必须是唯一的.

但是,有一个解决方案:

指定CSVFormat忽略CSV文件第一行中定义的列名称,并手动定义列名称.

CSVFormat文档:

定义列名称

要定义要用于访问记录的列名,请写入:

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

调用withHeader(String...)let让您使用给定的名称来寻址a中的值CSVRecord,并假设您的CSV源不包含也定义列名的第一个记录.如果确实如此,那么你将覆盖你的名字该元数据,你应该通过调用跳过第一个记录withSkipHeaderRecord(boolean)true.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有