示例说明
背景:在电子表格中,如果某个单元格中数据过长,于是在调整报表行高、列宽之后,会容易影响报表整体设计。
示例效果:在电子表格的某个单元格内容过长,就只显示前几个字符,后面的用...来展现。当鼠标放到该单元格位置,鼠标提示又能显示该单元格全部内容信息。(注意:这里的宏代码应用于非照相机照过来的表格数据)
原始效果:
示例效果:
设置方法
1、首先在电子表格设计器(Microsoft Office Excel)中,创建好电子表格,如下:
2、在浏览器的“分析展现”节点下,选中该电子表格,右键选择 编辑宏 进入报表宏界面。
3、在报表宏界面新建客户端模块。在弹出的新建模块对话框中,选择对象为spreadSheetReport、事件为onRender、并把下面宏代码复制到代码编辑区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | spreadsheetReport | onRender |
宏代码
代码块 | ||||
---|---|---|---|---|
| ||||
function main(spreadsheetReport, isAjaxRefreshCallback) {
var r = spreadsheetReport.getRowCount(); //获取电子表格总行数
// 该宏代码是针对附件对应的电子表格配合的,对应的电子表格数据行是从第三行开始,因此下面的i初始为2,在使用时可结合实际的表样进行修改
for (var i = 2; i < r - 1; i++) {
// 设置类别
var td = spreadsheetReport.getCell(i, 1); //根据行列号获取单元格
truncateCellInnerText(td, 5); //设置显示的字符个数
// 设置名称
td = spreadsheetReport.getCell(i, 2);
truncateCellInnerText(td, 2);
//设置数量
td = spreadsheetReport.getCell(i, 3);
truncateCellInnerText(td, 4);
}
}
// 如果单元格内容超出指定长度、将其截短
function truncateCellInnerText(cell, textMaxLength) {
if (!cell) {
return;
}
var len = textMaxLength || 10;
var txt = $(cell).text();
if (txt.length > len) {
$(cell).text(txt.substring(0, len) + "...");
$(cell).attr("title", txt);
}
}
function strlen(str) {
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;
} |
PS: 把如上中的宏代码粘贴进去。请各位根据实际情况调整代码中的5 ~ 13行。
示例资源:数据超长显示截短并添加省略号.xml