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

示例说明

我们有时候会需要在电子表格报表中根据参数值设置某一行或者某一列隐藏。可以参照如下方法进行设置。效果演示如下:

(1)未添加该宏时,报表展示如下:

        


(2)添加了宏,并且“示例参数”的值为“隐藏行”时,隐藏行所在的一行被隐藏,如图:

        

(3)切换“示例参数”值为“隐藏列”是,隐藏列所在的一列被隐藏,如图:

        

版本及客户端说明

1.smartbi版本:V7.0

2.客户端:PC

3.浏览器:IE11、谷歌浏览器(Chrome)、火狐浏览器(Firefox)

设置方法

1、首先在电子表格设计器(Microsoft Office Excel)中,创建电子表格报表。

2、在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面

3、在报表宏界面新建服务端模块。在弹出的新建模块对话框中,选择对象为spreadSheetReport、事件为onBeforeOutput、并把下面宏代码复制到代码编辑区域,并作相应的修改


宏类型

类型

对象

事件

ServerSidee

spreadsheetReport

onBeforeOutput

宏代码

function main(spreadsheetReport) {
    var sheet = spreadsheetReport.workbook.getWorksheets().get(0); //获取当前sheet,从0开始计数
    var value = spreadsheetReport.getParameterValue("隐藏"); //获取参数值
    if (value == "隐藏行") {
        sheet.cells.getRow(7).setHeight(0); //设置第八行隐藏,从0开始计数
    } else {
        sheet.cells.getColumn(4).setWidth(0); //设置第五列隐藏,从0开始计数
    }
}


关键对象总结

扩展对象总结

资源下载

报表资源:隐藏行列migrate.xml


注意事项:使用该服务端宏,则隐藏行列时,导出电子表格为Excel等时,相应的行列也会被隐藏。