温馨提示
本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。
示例说明
在电子表格中根据字段值增加箭头图片显示预警。如下图:大于100的则是绿色向上箭头,小于100的则是红色向下箭头。并点击图片进行钻取。
设置方法
1、 在电子表格设计器中,创建电子表格。
2、 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
3、 在报表宏界面新建客户端模块。在弹出的新建模块对话框中选择对象为 spreadsheetReport、事件为 onRender、并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onRender |
宏代码
function paramToString(v) { return v == null ? null: v.toString(); } function main(spreadsheetReport) { var r = spreadsheetReport.getRowCount(); //获取电子表格总行数 for (var i = 2; i < r; i++) { var td = spreadsheetReport.getCell(i, 2); //根据行列号获取单元格 var td1 = spreadsheetReport.getCell(i, 3); //根据行列号获取单元格 var v = parseFloat(td.innerText.replace(/,/g, ""));//替换所有逗号再转换 if (v > 100) { var img = document.createElement("IMG"); img.src = "/smartbi/vision/img/alertdialog/up.gif"; //获取图片 td1.appendChild(img); //图片放在单元格最后面 //td.insertBefore(img, td.firstChild);//图片单元格最前面 } else { var img = document.createElement("IMG"); img.src = "/smartbi/vision/img/alertdialog/down.gif"; td1.appendChild(img); //td.insertBefore(img, td.firstChild);//图片放在单元格最前面 } } for (var i = 2; i < r; i++) { debugger; var td3 = spreadsheetReport.getCell(i, 3); var aa = spreadsheetReport.getCell(i, 1).innerText; debugger; td3.style.cursor = "pointer"; debugger; td3.onclick = function(e) { debugger; var paramsInfo = []; var aa = ""; if(this.previousSibling && this.previousSibling.previousSibling) { aa = this.previousSibling.previousSibling.innerText; } paramsInfo.push({ name: "产品类别", value: paramToString(aa), displayValue: paramToString(aa) }); //@smartbi.openOtherPage:"I4028818a4f5da2d70153e4e45e1f1bad" openURL("openresource.jsp?resid=I4028818a4f5da2d70153e4e45e1f1bad&showtoolbar=true&refresh=true", [{ name: "paramsInfo", value: lang.toJSONString(paramsInfo) }]) } } }
关键对象总结
根据行列号获取单元格
:spreadSheetReport.getCell(i, 3);
图片放在单元格最后面:
td.appendChild(img);