本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。 |
电子表格报表中在非数据扩展区域添加了静态文字,当报表没有数据时看起来很不美观,则需要隐藏报表中的表格。如下:
(1)有数据时:
(2)没数据时:
(3)使用宏代码判断没有数据,隐藏表格,效果如下:
1.smartbi版本:V7.0
2.客户端:PC
3.浏览器:IE11、谷歌浏览器(Chrome)、火狐浏览器(Firefox)
1、在电子表格设计器(Microsoft Office Excel)中,创建电子表格报表。
2、在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
3、使用宏可以实现,目前有两种设置方式,一种是使用服务器端宏,一种是使用客户端宏;使用服务器端宏则导出报表也是生效的,使用客户端宏则导出是不生效的。根据需要两者选择一个就可以了。
客户端宏:在报表宏界面新建客户端模块。在弹出的新建模块对话框中,选择对象为spreadsheetReport、事件为onRender、并把下面宏代码复制到代码编辑区域。
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 } } |
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所在行开始,删除两行数据 } } |
报表资源:没有数据隐藏表格migrate.xml