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

该宏示例在 V10.5上 验证通过

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

示例说明

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

在未添加该宏时,报表展示如下:

        

添加了宏后,当参数的值为“隐藏行”时,隐藏行所在的一行被隐藏;当参数的值为"隐藏列"时,隐藏列所在的一行被隐藏。示例效果如下:

    

版本及客户端说明

1.smartbi版本:V9

2.客户端:PC

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

设置方法

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

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

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

宏类型

类型

对象

事件

ServerSide

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开始计数
    } 
    if (value == "隐藏列") {
        sheet.cells.getColumn(5).setWidth(0); //设置第六列隐藏,从0开始计数
    }
}

关键对象总结

  • 通过spreadsheetReport.workbook.getWorksheets().get(0) 方法获取需要设置隐藏效果的sheet。

  • 通过spreadsheetReport.getParameterValue("ParamName") 方法获取参数的值
  • 通过 sheet.cells.getRow(7).setHeight(0)方法以及sheet.cells.getColumn(4).setWidth(0)方法设置对应的行的高度为0以及列的宽度为0实现隐藏。 

扩展对象总结

  • 删除指定列数据sheet.cells.deleteColumn(3); //从0开始计数
  • spreadsheetReport.outputType判断导出类型 ,导出类型可以有:PDF、PNG、WORD、EXCEL、EXCEL2007、HTML,通过浏览器刷新他的值是refresh

资源下载

报表资源:migrate.xml

注意事项

        针对V10版本以上,若隐藏的行列是在合并单元格中的,会存在部分行列无法隐藏的现象,需要上报Support或者联系定制开发协助处理

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