SmartBi没有数据时隐藏电子表格报表

示例说明

电子表格报表中在非数据扩展区域添加了静态文字,当报表没有数据时看起来很不美观,则需要隐藏报表中的表格。如下:

(1)有数据时:

(2)没数据时:

(3)使用宏代码判断没有数据,隐藏表格,效果如下:

版本及客户端说明

1.smartbi版本:V5.1

2.客户端:PC

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

设置方法

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

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

3、使用宏可以实现,目前有两种设置方式,一种是使用服务器端宏,一种是使用客户端宏;使用服务器端宏则导出报表也是生效的,使用客户端宏则导出是不生效的。根据需要两者选择一个就可以了

 

  • 客户端宏:在报表宏界面新建客户端模块。在弹出的新建模块对话框中,选择对象为spreadsheetReport、事件为onRender、并把下面宏代码复制到代码编辑区域。

    客户端宏代码

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    function main(spreadsheetReport) {

        var RowCount = spreadsheetReport.getRowCount(); // 返回电子表格的行数

        var ColumnCount = spreadsheetReport.getColumnCount(); // 返回电子表格列数

        // 对第一个扩展数据的单元格进行判断,若该字段扩展出无数据,则表示表格无数据。本示例中是C2单元格

        if (spreadsheetReport.getCell(1, 2).innerHTML == "") {

            for (i = 0; i < RowCount; i++) {

                // 在excel中的行数据不扩展的,隐藏表格

                spreadsheetReport.getCell(i, 0).parentNode.style.display = "none";

            }

            //spreadsheetReport.getCell(x, y)是从excel的A1位置起,A1位置为0,0

        }

    }

  • 服务端宏:在报表宏界面新建服务器模块。在弹出的新建模块对话框中,选择对象为spreadsheetReport、事件为onBeforeOutput、并把下面宏代码复制到代码编辑区域。

     

    服务器端宏

    1

    2

    3

    4

    5

    6

    7

    function main(spreadsheetReport) {

        var cells = spreadsheetReport.workbook.worksheets.get(0).cells;

        var posList = spreadsheetReport.sheets[0].getExpandedPositions("C3");

        if (posList.length == 1 && cells.get(posList[0].row, posList[0].column).value == null) {

            cells.deleteRows(posList[0].row - 1, 2); //从C3所在行开始,删除两行数据

        }

    }

     

       

关键对象总结

  • 客户端宏中通过spreadsheetReport.getCell(i, 0).parentNode.style.display = "none";方法隐藏行
  • 服务端宏中通过cells.deleteRows(posList[0].row - 1, 2)方法删除行

参考链接:http://wiki.smartbi.com.cn:18081/pages/viewpage.action?pageId=21955886

http://wiki.smartbi.com.cn:18081

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值