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

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


问题描述:

电子表格报表实现根据参数值切换控制sheet页的显示或隐藏

参考示例:

如下图电子表格示例,有4个sheet页分别为,有一个参数发货区域(参数备选值有东北、华北....)。

参考宏代码,选中报表鼠标右键进入宏管理页面,新建客户端模块,对象:spreadsheetReport 、 事件:onParamValueChanged

将下述代码复制再根据实际情况修改即可

//ClientSide 对象 spreadsheetReport 事件 onParamValueChanged
function main(spreadsheetReport, param) {
    var value = spreadsheetReport.getParameterValue("发货区域");//实际参数名称
    var hideMaps = {
        "东北": "Sheet1",//参数名:sheet页名
        "华北": "Sheet2",
        "华东": "Sheet3",
    }; //数组里边写需要隐藏的sheet页名称和对应参数
    var sheetNames = spreadsheetReport.visibleSheetNames;
    var removeSheetName = hideMaps[value];
    var row = spreadsheetReport.sheetsTable.rows[0];
    if (removeSheetName) {
        for (var j = 0; j < row.cells.length; j++) {
            if (row.cells[j]._sheetName != removeSheetName) {
                row.cells[j].style.display = 'none';
            } else {
                row.cells[j].style.display = '';
            }
        }
    }else{//未选择隐藏参数则显示所有
        for (var j = 0; j < row.cells.length; j++) {
            row.cells[j].style.display = '';
        }
    }
}

效果:

QQ2024629-15717-HD.mp4


  • 无标签

评论

  1. 方秋月 发表:

    补充:通过参数切换SHEET页,可以调整上面代码进行实现:

    效果:

    1、当参数切换为“华北”时,显示效果

    2、当参数切换为“华东”时,显示效果

    代码

    //ClientSide 对象 spreadsheetReport 事件 onParamValueChanged
    function main(spreadsheetReport, param) {
        var value = spreadsheetReport.getParameterValue("发货区域");//实际参数名称
        var hideMaps = {
            "华北": "Sheet1",//参数名:sheet页名
            "华东": "Sheet2"
          
        }; //数组里边写需要隐藏的sheet页名称和对应参数
        // var sheetNames = spreadsheetReport.visibleSheetNames;
        // var removeSheetName = hideMaps[value];
        // var row = spreadsheetReport.sheetsTable.rows[0];
        // if (removeSheetName) {
        //     for (var j = 0; j < row.cells.length; j++) {
        //         if (row.cells[j]._sheetName != removeSheetName) {
        //             row.cells[j].style.display = 'none';
        //         } else {
        //             row.cells[j].style.display = '';
        //         }
        //     }
        // }else{//未选择隐藏参数则显示所有
        //     for (var j = 0; j < row.cells.length; j++) {
        //         row.cells[j].style.display = '';
        //     }
        // }
        
        if (value === "华东") {
            spreadsheetReport.changeSheet(1);
        } else{
            spreadsheetReport.changeSheet(0);
        }
    }