页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。


注意
title温馨提示

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

示例说明

背景:在电子表格中,如果某个单元格中数据过长,于是在调整报表行高、列宽之后,会容易影响报表整体设计。

示例效果:在电子表格的某个单元格内容过长,就只显示前几个字符,后面的用...来展现。当鼠标放到该单元格位置,鼠标提示又能显示该单元格全部内容信息。

 Image RemovedImage RemovedImage Added

Image Added

如上需求请参考如下步骤添加宏代码去实现,这是示例报表资源,点我下载。 


设置方法

1、首先在电子表格设计器(Microsoft Office Excel)中,创建好电子表格,如下:

...

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

 

宏类型

类型

对象

事件

ClientSide

spreadsheetReport

onRender

宏代码

代码块
languagejs
function main(spreadsheetReport)

...

 {
    //debugger;

...


    var r = spreadsheetReport.getRowCount(); //获取电子表格总行数

...


    for (var i = 2; i < r - 1; i++)

...

 {
        //

...

 设置类别
        var td = spreadsheetReport.getCell(i, 2); //根据行列号获取单元格

...


        truncateCellInnerText(td, 3);//设置显示的字符个数

...


         //

...

 设置名称
        td = spreadsheetReport.getCell(i, 3);

...


        truncateCellInnerText(td, 2);

...


        //设置数量

...


        td = spreadsheetReport.getCell(i, 4);

...


        truncateCellInnerText(td, 1);

...

    }

}

 

// 如果单元格内容超出指定长度、将其截短

...


    }
}
 
// 如果单元格内容超出指定长度、将其截短
function truncateCellInnerText(cell, textMaxLength)

...

 {
    if (!cell)

...

        return;

    }

    var len = textMaxLength || 10;

...

 {
        return;
    }
    var len = textMaxLength || 10;
    //var txt = cell.innerHTML.replace(/<[^<>]*>/g, '');

...


    var txt = $(cell).text();

...


    if (txt.length > len)

...

 {
        //cell.innerHTML = txt.substring(0, len) + "...";

...


        $(cell).text(txt.substring(0, len) + "...");

...


        //cell.title = txt;

...


        $(cell).attr("title", txt);

...

    }

}

 

...


    }
}
 
function strlen(str)

...

    var len = 0;

...

 {
    var len = 0;
    for (var i = 0; i < str.length; i++)

...

 {
        var c = str.charCodeAt(i);

...


        //单字节加1

...


        if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f))

...

 {
            len++;

...

        } else {

            len += 2;

        }

    }

    return len;

}

...


        } else {
            len += 2;
        }
    }
    return len;
}


PS:  把如上中的宏代码粘贴进去。请各位根据实际情况调整代码中的6 ~ 13行。

...