温馨提示
本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。
示例说明
在电子表格中需要根据"是否"字段的值,若值为0,则不显示对应的明细。若值为1,则显示对应的明细
显示如下:
第一页:
第二页:
设置步骤:
- 在电子表格设计器中实现电子表格,表样如下:
- 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面
- 在报表宏界面新建 服务端模块,在弹出的新建模块对话框中,选择对象为spreadsheetReport、事件为onBeforeOutput,并把下面宏代码复制到代码编辑区域
宏事件
类型 | 对象 | 事件 |
ServerSide | SpreadsheetReport | OnBeforeOutput |
宏代码
function main(spreadsheetReport) { var cells = spreadsheetReport.workbook.worksheets.get(0).cells; //获取行值 var B4List = spreadsheetReport.sheets[0].getExpandedPositions("B4"); //获取第一个表格"是否"扩展字段扩展出来的所有单元格 var B8List = spreadsheetReport.sheets[0].getExpandedPositions("B8"); var B12List = spreadsheetReport.sheets[0].getExpandedPositions("B12"); for (var i = 0; i < B4List.length; i++) { var B4 = B4List[i]; if (cells.get(B4.row, B4.column).value == "0") { //判断值是否为0 cells.get(B4.row - 1, B4.column + 2).value = ""; //设置"明细1"内容为空,即不显示 cells.get(B4.row, B4.column + 2).value = ""; //设置"明细2"内容为空,即不显示 } } for (var i = 0; i < B8List.length; i++) { var B8 = B8List[i]; if (cells.get(B8.row, B8.column).value == "0") { cells.get(B8.row - 1, B8.column + 2).value = ""; cells.get(B8.row, B8.column + 2).value = ""; } } for (var i = 0; i < B12List.length; i++) { var B12 = B12List[i]; if (cells.get(B12.row, B12.column).value == "0") { cells.get(B12.row - 1, B12.column + 2).value = ""; cells.get(B12.row, B12.column + 2).value = ""; } } /* //第一个表格判断 var value = cells.get(3, 1).value; if (value == "0") { var targetCell1 = cells.get(2, 3); targetCell1.value = ""; var targetCell2 = cells.get(3, 3); targetCell2.value = ""; } //第二个表格判断 var value = cells.get(7, 1).value; //获取B8单元格的值(行号,列好),从0开始计数 if (value == "0") { //单元格值判断 var targetCell1 = cells.get(6, 3); //获取D7单元格 targetCell1.value = ""; //设置其内容为空 var targetCell2 = cells.get(7, 3); //获取D8单元格 targetCell2.value = ""; //设置其内容为空 }*/ }
附件下载
报表资源:migrate-示例资源.xml
使用数据:data.sql