一、导入OpenCSV的jar包
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.6</version>
</dependency>
二、创建csv文件解析工具类
public class CsvUtils {
public static <T> List<T> getCsvData(String filePath, Class<T> clazz) {
InputStreamReader in;
CsvToBean<T> csvToBean;
try {
in = new InputStreamReader(Files.newInputStream(Paths.get(filePath)), StandardCharsets.UTF_8);
HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(clazz);
csvToBean = new CsvToBeanBuilder<T>(in).withMappingStrategy(strategy).build();
} catch (Exception e) {
return null;
}
return csvToBean.parse();
}
}
三、编写csv文件列标题的映射对象
1. csv文件示例
user name,userAge,user-sex
张三,18,男
田七,19,女
2. 映射类
public class UserInfoCsvBO {
@CsvBindByName(column = "user name")
private String name;
@CsvBindByName(column = "userAge")
private String age;
@CsvBindByName(column = "user-sex")
private String sex;
}
四、使用工具类
private static final String CSV_FILE_PATH = "/home/data/csv/csv_test.csv";
public List<UserInfoCsvBO> getUserInfo(){
return CsvUtils.getCsvData(CSV_FILE_PATH, UserInfoCsvBO.class);
}