本文将介绍在旧版本的 Commons CSV 中,这样给 CSV 自定义头部字段,然后利用这些头部字段访问数据。步骤如下:
(1)通过 CSVFormat 的 withHeader() 方法设置头部字段,接收一个字符数组;
(2)通过 CSVRecord 的 get(String name) 方法获取数据;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.Reader;
import java.net.URL;
/**
* 旧版本 commons csv 使用默认格式解析 CSV 文件,通过 withHeader() 方法自定义头部映射
* @author hxstrive.com 2021/12/26
*/
public class OldCsvDemo1 {
public static void main(String[] args) throws Exception {
URL url = OldCsvDemo1.class.getResource("/demo.csv");
Reader in = new FileReader(url.getFile());
// 使用 withHeader() 方法映射 csv 头
Iterable<CSVRecord> records = CSVFormat.DEFAULT.withHeader(
"姓名", "性别", "年龄", "部门", "薪水", "入职日期").parse(in);
for (CSVRecord record : records) {
// 姓名,性别,年龄,部门,薪水,入职日期
System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\n",
record.get("姓名"),
record.get("性别"),
record.get("年龄"),
record.get("部门"),
record.get("薪水"),
record.get("入职日期")
);
}
}
}注意:
在 Commons CSV 1.9+ 之后,不在建议使用 withHeader() 方法,而是采用 CSVFormat.Builder 的 setHeader() 方法。例如:
CSVFormat.DEFAULT.builder()
.setHeader("H1", "H2", "H3")
.build();