csv-commons - withSkipHeaderRecord选项不会跳过任何内容

时间:2017-10-30 07:56:48

标签: java csv parsing header apache-commons-csv

我有通常带标题的csv文件

f1, f2, f3
1, 2, 3

我尝试解析它:

 Iterable<CSVRecord> records = CSVFormat.EXCEL.withIgnoreEmptyLines().withSkipHeaderRecord().parse(in);
            records.forEach(record -> {
               ...

但无论如何,无论如何第一张唱片都是标题。

我错了什么?

3 个答案:

答案 0 :(得分:1)

指定该文件具有要跳过的标题:

CSVFormat.EXCEL.withHeader().withSkipHeaderRecord();

答案 1 :(得分:0)

我知道,对吗?说你有一个装满绿色,棕色和红色M&amp; Ms的碗。你决定跳过蓝色的。你知道我要去哪儿吗?您不会拥有标题记录。

尝试.withFirstRecordAsHeader()。我觉得你很高兴。

答案 2 :(得分:0)

我认为Ion Freeman想要说的是,如果您首先声明第一行是标题,则可以跳过标题,例如:(未测试)。

 Iterable<CSVRecord> records = CSVFormat.EXCEL.withIgnoreEmptyLines().withFirstRecordAsHeader().withSkipHeaderRecord().parse(in);

在我的情况下,这是不可能的,因为我的标头无效且重复。我不得不通过另一种方式将其删除。我通过阅读第一行将其丢弃。

in.readLine();  // in = BufferedReader or an other Reader
records.forEach(record -> {
...