示例说明
在系统中,存在报表缓存和数据集缓存:
1、电子表格有缓存,但是数据集禁止了缓存。
2、电子表格和报表数据集同时存在缓存。
如下电子表格中通过数据集获取当前时间,同时使用了Excel的函数获取当前时间作为对比。在smartbi中多次打开该报表,会发现数据集的时间是没有发生变化的,所以可通过宏代码禁止缓存。
设置方法
- 在电子表格设计器 Excel 中,创建一张电子表格报表。
- 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建服务器端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onBeforeOutput;并把下面的服务器宏代码复制到代码区域。
服务器宏类型
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
服务器宏代码
1、禁止电子表格报表缓存:
function main(spreadsheetReport) { spreadsheetReport.cacheable = false; }
2、禁止电子表格报表缓存和数据集缓存:
function main(spreadsheetReport) { spreadsheetReport.cacheable = false; spreadsheetReport.remoteInvoke("SpreadsheetReportModule", "clearDataSetCache", '["' + spreadsheetReport.clientId + '", null]'); }
资源下载
报表资源: migrate.xml