【问题标题】:csv-commons - withSkipHeaderRecord option doesn't skip anythingcsv-commons - withSkipHeaderRecord 选项不会跳过任何内容
【发布时间】:2018-04-11 03:27:24
【问题描述】:
我有通常的带有标题的 csv 文件
f1, f2, f3
1, 2, 3
我尝试解析它:
Iterable<CSVRecord> records = CSVFormat.EXCEL.withIgnoreEmptyLines().withSkipHeaderRecord().parse(in);
records.forEach(record -> {
...
但无论如何,第一条记录还是标题。
我做错了什么?
【问题讨论】:
标签:
java
csv
parsing
header
apache-commons-csv
【解决方案1】:
我知道,对吧?假设你有一碗绿色、棕色和红色的 M&M。你决定跳过蓝色的。你知道我要去哪里吗?您没有标题记录。
试试 .withFirstRecordAsHeader()。我想你会很高兴的。
【解决方案2】:
我认为 Ion Freeman 想说的是,如果您首先声明第一行是这样的标题,则可以跳过标题:(未测试)。
Iterable<CSVRecord> records = CSVFormat.EXCEL.withIgnoreEmptyLines().withFirstRecordAsHeader().withSkipHeaderRecord().parse(in);
在我的情况下,这是不可能的,因为我有一个带有重复项的无效标题。我不得不通过另一种方式将其删除。我看了第一行就把它扔掉了。
in.readLine(); // in = BufferedReader or an other Reader
records.forEach(record -> {
...
【解决方案3】:
指定该文件有要跳过的标题:
CSVFormat.EXCEL.withHeader().withSkipHeaderRecord();