我有通常的带有标题的csv文件
f1, f2, f3
1, 2, 3
我尝试解析它:
Iterable<CSVRecord> records = CSVFormat.EXCEL.withIgnoreEmptyLines().withSkipHeaderRecord().parse(in);
records.forEach(record -> {
...
但无论如何,第一条记录无论如何都是标题。
我做错了什么?
指定文件具有要跳过的标头:
CSVFormat.EXCEL.withHeader().withSkipHeaderRecord();
我知道
,对吧?假设你有一个装满绿色、棕色和红色 M&Ms 的碗,你决定跳过蓝色的。你明白我要去哪里了吗?您没有标头记录。
试试 .withFirstRecordAsHeader()。我想你会很高兴的。
我认为 Ion Freeman 想说的是,如果你首先声明第一行是这样的标题,你可以跳过标题:(未经测试)。
Iterable<CSVRecord> records = CSVFormat.EXCEL.withIgnoreEmptyLines().withFirstRecordAsHeader().withSkipHeaderRecord().parse(in);
就我而言,这是不可能的,因为我有一个重复的无效标头。我不得不通过另一种方式删除它。我通过阅读第一行将其扔掉。
in.readLine(); // in = BufferedReader or an other Reader
records.forEach(record -> {
...