【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
在插件开发中,某些时候需要对结果报表做一些操作,以实现自定义的展示需求,比如给结果报表增加新的悬浮元素等。
我们以分页预览为例,首先来看一下分页预览从发起请求到最后响应给浏览器端展示HTML的过程。
可以看到结果报表是在PageActor(预览执行方式Actor接口的实现类)之后产生的,如果我们需要修改结果报表的话,那么久可以继承PageActor,重写这个类生成结果报表的方法。
/**
* 从缓存中读取结果报表(如果有缓存)
*
* @param tpl 报表薄
* @param tplPath 报表路径
* @param reportCache 用于缓存报表的对象
* @param parameterMap 参数集
* @return 结果报表薄
*/
public ResultWorkBook getResultBookFromCacheIfNeed(TemplateWorkBook tpl, String tplPath,
ReportCache reportCache,
Map parameterMap, int sheetIndex);
/** * 生成报表薄跨sheet计算器 * * @param workBook 报表薄 * @param parameterMap 参数集 * @return 跨sheet计算器 */ public WorkBookExecutor createWorkBookExecutor(WorkBook workBook, Map parameterMap);
一般来说,只需要重载getResultBookFromCacheIfNeed方法就可以实现修改结果报表的目的了。
public class ModifyActor extends PageActor {
@Override
public ResultWorkBook getResultBookFromCacheIfNeed(TemplateWorkBook tpl, String tplPath, ReportCache reportCache, Map parameterMap, int sheetIndex) {
ResultWorkBook wb = super.getResultBookFromCacheIfNeed(tpl, tplPath, reportCache, parameterMap, sheetIndex);
modifyWorkBook(wb);
return wb;
}
private void modifyWorkBook(ResultWorkBook wb) {
// 修改结果报表的具体实现
}
}
接入点注册
<extra-report> <WebActor class="com.fr.plugin.demo.ModifyActor"/> </extra-report>