-
Notifications
You must be signed in to change notification settings - Fork 0
CSV
BigBaicai edited this page Nov 22, 2018
·
1 revision
FileInputStream inputStream = new FileInputStream("test.csv");
BeanReader reader = CSVReader.newBeanReader(inputStream, TestObj.class)
.setHeaderMap(headrs -> headrs)
.setCellProcessor(new CellProcessor[]{
new Optional(),
new Optional()
}).setPrintInfo(true);
List<TestObj> result = reader.readCSV();setHeaderMap() 接收一个joycai.utils.sheet.csv.ICSVHeaderMapper实例,该接口定义如下
public interface ICSVHeaderMapper {
String[] mapHeader(String[] csvHeaders);
}入参为csv的表头数组,返回值是要按照顺序对应的对象的字段名,举例来说,假设有一个对象为:
class User{
String name;
String age;
String gender;
}而要读取的csv表头为“年龄”,“姓名”,“性别”,那么在setHeaderMap()中应当如下:
.setHeaderMap(headrs->{
//此时headers数组的内容为{“年龄”,“姓名”,“性别”}
return new String[]{"age","name","gender"}
})TestObj testObj = new TestObj();
testObj.setCol1("ttt");
testObj.setCol2("tvvt");
testObj.setF1(1f);
testObj.setF2(2f);
testObj.setI1(1);
testObj.setI2(2);
testObj.setDate(new Date());
testObj.setBl1(false);
FileOutputStream outputStream = new FileOutputStream(new File("output/out.csv"));
CSVWriter.newBeanWriter(new OutputStreamWriter(outputStream), TestObj.class)
.addHeader(new String[]{"列1","列2"})
.setCellProcessor(new CellProcessor[]{
new Optional(),
new Optional()
})
.writeFile(Lists.newArrayList(testObj),new String[]{"col1","col2"});writeFile接收2个参数,参数1是数据对象列表,参数2则是一个String数组,内容是对象的字段名,数组顺序就是写入表格的列的顺序