页面树结构
转至元数据结尾
转至元数据起始

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如报表使用冻结,或多个宏代码冲突等),需根据实际需求开发代码。

需求描述

数据库字段数据存储着一些超链接,想利用电子表格将超链接展现,并且实现点击超链接在新窗口打开超链接内容,可以通过宏代码来实现。

使用宏代码前的效果:

使用宏代码后的效果:

解决方案

以下宏代码只支持不分页的分组报表。

在电子表格中右键 编辑宏 ,新建一个服务端宏模块,宏对象及事件如下:

类型

对象

事件

ServerSide

spreadsheetReport

onBeforeOutput

将以下代码贴到宏代码编辑区:

function main(spreadsheetReport) {
    spreadsheetReport.printExpandedPositions();
}

再新建一个客户端宏模块,宏对象及事件如下:

类型

对象

事件

ClientSide

spreadsheetReport

onRender

将以下代码贴到宏代码编辑区:

function main(spreadsheetReport, isAjaxRefreshCallback) {
    var C3list = spreadsheetReport.getExpandedPositions("C3");//超链接字段所在单元格
    for(var i=0;i<C3list.length;i++ ){
		if(spreadsheetReport.getCell(C3list[i])){
      		var href = spreadsheetReport.getCell(C3list[i]).innerText;
        	spreadsheetReport.getCell(C3list[i]).innerHTML = "<a href="+ href +" target='_blank'>"+ href + "</a>" ;
    	}
	}
}

如需在8.5的APP中打开外部链接需将app更新为2018-12-20后的版本并添加参数:outSideResTitle='外部资源标题':

function main(spreadsheetReport, isAjaxRefreshCallback) {
    var D3list = spreadsheetReport.getExpandedPositions("D3");//超链接字段所在单元格
    for(var i=0;i<D3list.length;i++ ){
		if(spreadsheetReport.getCell(D3list[i])){
      		var href = spreadsheetReport.getCell(D3list[i]).innerText;
      		var text = href;
      		href += href.indexOf("?") > 0 ? '&' : '?';
      		href += "outSideResTitle=外部资源" //打开外部资源时的标题
        	spreadsheetReport.getCell(D3list[i]).innerHTML = "<a href="+ href +" target='_blank' >"+ text + "</a>" ;
		}
    }
}

扩展

如果想实现隐藏url,只显示超链接网站的标题,点击标题实现跳转,如下图:

电子表格制作中使用两列,然后把url所在列C列隐藏后发布电子表格

宏方案:

在电子表格中右键 编辑宏 ,新建一个服务端宏模块,宏对象及事件如下:

类型

对象

事件

ServerSide

spreadsheetReport

onBeforeOutput

将以下代码贴到宏代码编辑区:

function main(spreadsheetReport) {
    spreadsheetReport.printExpandedPositions();
}

再新建一个客户端宏模块,宏对象及事件如下:

类型

对象

事件

ClientSide

spreadsheetReport

onRender

将以下代码贴到宏代码编辑区:

function main(spreadsheetReport, isAjaxRefreshCallback) {
    var B3list = spreadsheetReport.getExpandedPositions("B3");//超链接名称所在单元格
    var C3list = spreadsheetReport.getExpandedPositions("C3");//超链接字段url所在单元格
    for(var i=0;i<B3list.length;i++ ){
		if (spreadsheetReport.getCell(C3list[i]) && spreadsheetReport.getCell(B3list[i])) {
	      var href = spreadsheetReport.getCell(C3list[i]).innerText;
    	  var title = spreadsheetReport.getCell(B3list[i]).innerText;
          spreadsheetReport.getCell(B3list[i]).innerHTML = "<a href="+ href +" target='_blank'>"+ title + "</a>" ;
		}
    }
}


资源下载

资源:migrate.xml