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


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

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

1. 示例效果

  • 原效果:默认合并空白的单元格

  • 预期效果:不合并空白单元格

2. 操作步骤

  • 步骤一: 新建一个空白的自助仪表盘

  • 步骤二:  拖入"web电子表格",双击”web电子表格“进入编辑界面

  • 步骤三:数据如下,保存退出

  • 步骤四:鼠标右键进入宏管理页面

  • 步骤五:新建宏。事件:“ onBeforeOutput(在输出结果前)

  • 步骤六:编写宏代码实现效果

把下面宏代码复制到代码区域

function main(pageServer: IPageServer, portletServer: ITableSheetPortletServer) {
    /*工作表中的单元格*/
    let cells = portletServer.getWorkbook().getWorksheets().get("Sheet1").getCells();
    let C5PosList = portletServer.getSheets()[0].getExpandedPositions("C5");
    let D5PosList = portletServer.getSheets()[0].getExpandedPositions("D5");
    /*获取原始的D5、E5样式*/
    let D5Style = cells.get("D5").getStyle();
    let E5Style = cells.get("E5").getStyle();
    for (let i = 0; i < C5PosList.length; i++) {
        let C5Sub = cells.get(C5PosList[i].getRow(), C5PosList[i].getColumn());
        let fromRow = C5Sub.getRow();
        let toRow = C5Sub.getRow();
        /*计算行数*/
        let mergedRange = C5Sub.getMergedRange();
        if (mergedRange) {
            toRow += mergedRange.getRowCount() - 1;
        }
        for (let z = fromRow; z <= toRow; z++) {
            for (let j = 0; j < D5PosList.length; j++) {
                /*获取单元格*/
                let cell = cells.get(z, D5PosList[j].getColumn());
                mergedRange = cell.getMergedRange();
                if (mergedRange) {
                    /*如果产生了合并单元格,取消合并*/
                    cells.unMerge(mergedRange.getFirstRow(), mergedRange.getFirstColumn(),
                        mergedRange.getRowCount(), mergedRange.getColumnCount());
                }
                /*设置样式*/
                cell.setStyle(D5Style);
                /*获取单元格*/
                cell = cells.get(z, D5PosList[j].getColumn() + 1);
                mergedRange = cell.getMergedRange();
                if (mergedRange) {
                    /*如果产生了合并单元格,取消合并*/
                    cells.unMerge(mergedRange.getFirstRow(), mergedRange.getFirstColumn(),
                        mergedRange.getRowCount(), mergedRange.getColumnCount());
                }
                /*设置样式*/
                cell.setStyle(E5Style);
            }
        }
    }
}
  • 步骤七:点击 保存。重新访问报表,可看到效果已实现

3. 下载资源

缺少数据不合并单元格.xml

  • 无标签