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