在网上找opencsv Write时,意外的发现国内的openCsv的经验都是read到string[],感觉很不符合对象思想啊,这里附一份openCsv To Bean 的源码,虽然还是感觉有点蠢笨,但是本人感觉比string[]的方式好
public List<Object> readFile(String fileName) {
InputStreamReader fileReader = null;
CSVReader csvReader = null;
ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy();
CsvToBean csv = new CsvToBean();
String[] columns = null; // 用于存放映射字段
List<Object> listobject = new ArrayList<Object>(); // 此处可以写成任意对象
try {
// fileReader = new FileReader(file); // 创建文件读写器
fileReader = new InputStreamReader(new FileInputStream(fileName), "UTF-8");
csvReader = new CSVReader(fileReader); // 创建CSV读写对象
strat.setType(实体类.class);
// 此处的string[] 代表的是对应的实体类的字段,(按照csv文件的顺序对应字段,感觉如果顺序一样可以用反射来做)
columns = new String[] { "personId", "serial", "number", "fullName", "sex", "birth", "startDate", "jobId", "emailAddress", "phoneNumber", "deptId", "status", "brand", "personType",
"effectiveStartDate", "pPersonId", "transferDeptId" };
strat.setColumnMapping(columns); // 映射字段放进处理的类
listobject = csv.parse(strat, csvReader); // 根据映射 读取存入 list
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
csvReader.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return listobject;
}
实体类为
private String personId; // 人员ID
private String serial; // 序列号
private String deptId; // 部门ID
private String transferDeptId; // 临时部门ID
private String number; // 人员编号
private String fullName; // 姓名
private String sex; // 性别
private String birth; // 生日
private String startDate; // 入职日期
private String jobId; // 职务id
private String emailAddress; // 邮箱
private String phoneNumber; // 电话
private String status; // 员工状态
private String brand; // 品牌信息
private String personType; // 人员类型
private String effectiveStartDate; // 更新日期
private String pPersonId; // 直属上级领导id
引用的包
<dependency>
<span style="white-space:pre"> </span><groupId>net.sf.opencsv</groupId>
<span style="white-space:pre"> </span><artifactId>opencsv</artifactId>
<span style="white-space:pre"> </span><version>2.3</version>
</dependency>