使用apache commons获取CSV文件头

时间:2016-03-28 19:13:58

标签: java csv apache-commons-csv

我一直在寻找过去2小时来解决我的问题是徒劳的。我正在尝试使用Apache commons读取CSV文件,我能够读取整个文件但我的问题是如何只提取数组中CSV的标题?

4 个答案:

答案 0 :(得分:7)

默认情况下,CSVParser读取的第一条记录将始终是标题记录,例如在下面的例子中:

CSVFormat csvFileFormat = CSVFormat.DEFAULT.withHeader(FILE_HEADER_MAPPING);
FileReader fileReader = new FileReader("file");
CSVParser csvFileParser = new CSVParser(fileReader, csvFileFormat);
List csvRecords = csvFileParser.getRecords();

csvRecords.get(0)将返回标题记录。

答案 1 :(得分:1)

我四处张望,甚至上面的解决方案都行不通..对于其他遇到此问题的人来说,确实如此。

Iterable<CSVRecord> records;
Reader in = new FileReader(fileLocation);
records = CSVFormat.EXCEL.withHeader().withSkipHeaderRecord(false).parse(in);
Set<String> headers = records.iterator().next().toMap().keySet();

答案 2 :(得分:0)

BufferedReader br = new BufferedReader(new FileReader(filename));

CSVParser parser = CSVParser.parse(br, CSVFormat.EXCEL.withFirstRecordAsHeader());

List<String> headers = parser.getHeaderNames();

这对我有用。最后一行就是您需要的,将解析器找到的标头提取到字符串列表中。

答案 3 :(得分:0)

在 Kotlin 中:

val reader = File(path).bufferedReader()
val records = CSVFormat.DEFAULT.withFirstRecordAsHeader()
    .withIgnoreHeaderCase()
    .withTrim()
    .parse(reader)

println(records.headerNames)