距离之前的Java APT的相关文章已经过了接近半年时间,这半年间也做了一些有关APT的应用,最近趁着过年在家整理开源了一个Excel导出接口自动生成的项目至Github(https://github.com/DreamJM/DreamSpringExcel),各位要是喜欢可以点击链接去点个星支持一下。
1. 需求&背景
在类似后台管理系统中,会有一些Table数据查询与展示页面,同时会要求能将数据导出成Excel,而且导出数据基本上与Table页面展示数据相同。而利用poi以及相同的数据源进行Excel导出接口实现时,通常伴随着大量的雷同代码。
为此,最好的方式即在现有数据查询接口的基础上,通过注解定义以及编译器的注解处理器,自动生成Excel导出接口。
2. 当前实现
此次开源项目针对上述需求进行实现,注解及相关通用工具定义在excel-base中,注解处理器相关逻辑在excel-processor中,有兴趣的各位可以去看一下说明与源码,目前先对使用进行说明。
@ExcelSupport("com.dream.spring.excel.test.controller.excel.ExcelController")
@RestController
public class TestController {
@ExcelExport(value = "/api/excel/test",
annotations = {@AnnotationDef(clazz = TestAnnotation.class, members = {@AnnotationMember(name = "value", value = "\"hello\""),
@AnnotationMember(name = "children", value = "value=\"child\"", annotation = ChildValue.class)})})
@GetMapping("/api/test")
public Result<PageResult<Test>> test(@RequestParam(required = false) String param1, @ParamIgnore("-1") @RequestParam int type,
@ParamIgnore @RequestParam(required = false) Integer pageNum,
@ParamIgnore @RequestParam(required = false) Integer pageSize) {
... ...
}
}
如上示例所示,在原有接口的基础上增加了如下两个注解:
- ExcelSupport:注解处理器的入口,同时其value值指示自动生成的Excel导出接口的Controller名,默认将会在被注解Controller同级的包下生成ExcelController,并且多个被注解Controller可指定同一Controller名。
- ExcelExport:指定Excel生成的数据源方法,根据该方法生成E