public class MyBean implements Serializable{
private String id;
private int price;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setPrice(int price) {
this.price = price;
}
public int getPrice() {
return price;
}
}
public List<MyBean> load(String fileName) throws FileNotFoundException{
HeaderColumnNameTranslateMappingStrategy<MyBean> strat = new HeaderColumnNameTranslateMappingStrategy<MyBean>();
strat.setType(MyBean.class);
CSVReader reader = new CSVReader(new FileReader(fileName));
//csvのヘッダとbean との関係を設定
Map<String, String> map = new HashMap<String, String>();
map.put("ID","id");
map.put("PRICE", "price");
strat.setColumnMapping(map);
CsvToBean<MyBean> csv = new CsvToBean<MyBean>();
List<MyBean> list = csv.parse(strat, reader);
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
java.util.Date 型のデータを読み込む場合,ちょっと工夫が必要
csv にDATE 列(形式はyyyy/MM/dd)が加わったとします.beanにも Date date のメンバを追加.
public class DateTypeEditor extends PropertyEditorSupport{
@Override
public void setAsText(String text) throws IllegalArgumentException {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
Date date = null;
try{
date = format.parse(text);
}catch(ParseException e){
throw new RuntimeException(e);
}
setValue(date);
}
}
public List<MyBean> load(String fileName) throws FileNotFoundException{
PropertyEditorManager.registerEditor(Date.class, DateTypeEditor.class); //これを追加
HeaderColumnNameTranslateMappingStrategy<MyBean> strat = new HeaderColumnNameTranslateMappingStrategy<MyBean>();
strat.setType(MyBean.class);
CSVReader reader = new CSVReader(new FileReader(fileName));
//csvのヘッダとbean との関係を設定
Map<String, String> map = new HashMap<String, String>();
map.put("ID","id");
map.put("PRICE", "price");
map.put("DATE", "date");
strat.setColumnMapping(map);
CsvToBean<MyBean> csv = new CsvToBean<MyBean>();
List<MyBean> list = csv.parse(strat, reader);
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}