1、添加依赖
- 添加依赖包
com.gitee.sergius
excel-processer
1.0.0
1、 导入功能:(目前仅支持.xls文件的导入,示例参考:api-platform/api-web/src/main/java/com/gitee/sergius/apiweb/biz/ExcelImport.java
)
List schools = ExcelToolFactory.createImportor()
.dataFormat("yyyy/MM/dd HH:mm")
.startRow(0)
.entityClass(School.class)
.inputFile(new FileInputStream(new File("d:/import.xls")))
.reflectMap(reflectMap)
.processMap(fieldProcessor)
.produce();
Map reflectMap = new HashMap<>(5);
reflectMap.put("name",0);
reflectMap.put("createDate",1);
reflectMap.put("address",2);
reflectMap.put("type",3);
reflectMap.put("feeLevel",4);
该例表示将第0列数据保存到实体的`name`域中,第1列保存到`createDate`域中,。。。
Map fieldProcessor = new HashMap<>(1);
fieldProcessor.put("feeLevel", src -> {
if("1000".equals(src)){
return "一级";
}else if("2000".equals(src)){
return "二级";
}else if("3000".equals(src)){
return "三级";
}else {
return "";
}
});
该例表示feeLevel域在存储时,如果excel中值为1000,则对应存储为`一级`,如果为2000,存储为`二级`,...
api-platform/api-web/src/main/java/com/gitee/sergius/apiweb/biz/ExcelExport.java
) try {
ExcelToolFactory.createExportor()
.columnWidth(40)
.dataFormat("yyyy/MM/dd")
.sheetTitle("学校列表")
.startColumn(2)
.startRow(4)
.headers("学校名称", "建校日期", "学校类型", "学费层级", "学生名字", "年龄", "年级")
.excludedFields("School.address", "Student.birth")
.fieldReflectMap(fieldReflectMap)
.produce(schools)
.writeToFile("d:/", "complex.xls");
} catch (ExcelException e) {
e.getMessage();
}
Map> fieldReflectMap = new HashMap<>(3);
HashMap switchMap = new HashMap<>(4);
switchMap.put("1", "小学");
switchMap.put("2", "中学");
switchMap.put("3", "大学");
switchMap.put(OTHER_REFLECT_KEY, "其他");
fieldReflectMap.put("School.type", switchMap);
该例表示将School对象中type域的值做转换,如果值为1,导出到excel中展示为“小学”,。。。
如果有不需要转换的值,可以用`switchMap.put(OTHER_REFLECT_KEY, "其他");`表示除1、2、3之外的值将被转换成“其他”。
如果要导出的对象里面有子对象组成的列表,那么子列表将会以合并单元格的形式导出。
源码及示例:
https://gitee.com/sergius/api-platform/tree/master
导入导出组件是excel-processer子工程