本文将介绍在旧版本的 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();