前提:
在<Java导出Excel> 1.0 Java实现Excel动态模板导出 的基础上,我们做动态模板数据的导出!
Controller层:
/**
* 导出:表单数据
* 权限-管理员
*
*/
@PostMapping(value = "/downFormData")
@AuthInterceptor("mag:down:FormData") // 资源项
public Result downFormData(HttpServletResponse response, HttpServletRequest request, @RequestBody String param) {
try {
Map<String, Object> params = JsonUtils.readValue(param, Map.class);
heimaListService.downFormData(params, response, request);
} catch (Exception e) {
log.error("===downFormDatais error===:" + e.getMessage(), e);
return CommonUtil.getErrorInfo("服务异常");
}
return Result.success().result("下载成功");
}
备注:JsonUtils.readValue参考文档:<Java工具类>json字符串、List Map,List 对象转换为相应的JavaBean对象
service接口层:
//导出:表单数据
void downFormData(Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) throws Exception;
serviceImpl实现层:
@Autowired
private HeimaListMapper heimaListMapper;
/*
* 查询:数据导出动态模板
*/
private List<Map<String, Object>> getHeaderss_1() {
List<Map<String, Object>> kk = heimaListMapper.query();
// 导出模板不需要:hrC,hrD这两个字段,过滤掉;
kk = kk.stream().filter(e -> (!e.get("headerField").equals("hrC"))).
filter(e -> (!e.get("headerField").equals("hrD"))).
collect(Collectors.toList());
return kk;
}
/*
* 导出:表单数据
*
*/
@Override
public void downFormData(Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) throws Exception {
String fileName = "表单数据";
// 查询表单数据
List<Map<String, Object>> datas = heimaListMapper.getFormData(params);
// 将表单数据填充到EXCEL模板中;getHeaderss_1为查询到的模板
// ExcelUtil.getWriteDatas2 方法参考:Java Excel 1.0 动态模板导出:ExcelUtil工具类
ExcelUtil.getWriteDatas2(response, datas,
getHeaderss_1(), fileName);
}