需要这么一个页面,分为左侧链接和右侧详细内容两部分,点击左侧报表的链接单元格,右侧报表定位到同名的目标单元格并高亮
1.1创建电子表格"左侧报表",用于存放超链接报表;
1.2创建电子表格"右侧报表",用于存放具体内容;
1.3创建页面"页面报表跳转",存放左右两侧两张报表
(1)根据需要选择布局方式,这里使用的是2列_3_7开
(2)适当设置高度,边框,滚动条等设置项,根据需要调整
2.1 "右侧报表"电子表格
(1)服务端宏:"获取右侧报表员工姓名扩展单元格"
2.2 "页面报表跳转"页面创建宏
(1)服务端宏:"左侧点击链接右侧定位_link"
(2)客户端宏:"左侧点击链接右侧定位_action"
3.1 "左侧点击链接右侧定位_link"中配置sheet页和链接单元格
3.2 "左侧点击链接右侧定位_action "中配置右侧报表目标单元格,右侧报表节点Id
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
function main(spreadsheetReport) { spreadsheetReport.printExpandedPositions() } |
类型 | 对象 | 子对象 | 事件 |
---|---|---|---|
ServerSide | 左侧报表 | spreadsheetReport | onBeforeOutput |
function main(spreadsheetReport) { //左侧报表超链接所在sheet页名称和单元格名称 var linkCell = "B2"; var sheetName = "Sheet1"; if (!spreadsheetReport || (spreadsheetReport.outputType != "refresh" && spreadsheetReport.outputType != "HTML")) return; var sheet = spreadsheetReport.getSheetByName(sheetName); var positions = linkCell.split(","); for (var i = 0; i < positions.length; i++) { var position = positions[i].trim(); var expandedPositions = sheet.getExpandedPositions(position); for (var j = 0; j < expandedPositions.length; j++) { var cell = sheet.getCell(expandedPositions[j]); if (true) { addLink(spreadsheetReport, sheet, cell, linkCell); } } } } function addLink(spreadsheetReport, sheet, cell, linkCell) { sheet.addRuleLink(cell.cellPosition, "anyRuleName", [ getCellValue(cell.getRelativeCells(linkCell)) ]); } function getCellValue(cell) { if (!cell) return null; if (typeof cell.length == 'number') { var ret = []; for (var i = 0; i < cell.length; i++) { ret.push(cell[i].value); } return ret; } else { return cell.value; } } function checkValue(v1, v2, op) { if (v1 && typeof v1.length == 'number') { for (var i = 0; i < v1.length; i++) { if (checkValue(v1[i], v2, op)) return true; } return false; } if (v2.match(/^d+(.d+)?$/)) { v2 = parseFloat(v2); } switch (op) { case 'EQUAL': return (v1 == v2) || (v2.match(/^\d+(\.\d+)?$/) && v1 == parseFloat(v2)); case 'GREATER': return v1 > v2; case 'LESS': return v1 < v2; case 'INCLUDE': return v1 && v1.indexOf(v2) >= 0; case 'PREFIX': return v1 && v1.indexOf(v2) == 0; case 'SUFFIX': return v1 && v1.indexOf(v2) == (v1.length - v2.length); } } |
类型 | 对象 | 子对象 | 事件 |
---|---|---|---|
ClientSide | 左侧报表 | spreadsheetReport | onLinkClick |