请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

kotoYY

金牌服务用户

113

主题

265

帖子

840

积分

金牌服务用户

积分
840
kotoYY
金牌服务用户   /  发表于:2017-10-23 15:27  /   查看:3971  /  回复:6
我需要实现个功能,把空的单元格或者带公式的单元格返回值为空或者返回值是错误类型的都变成“/”,我用

var oldPaint = GC.Spread.Sheets.CellTypes.Text.prototype.paint;
GC.Spread.Sheets.CellTypes.Text.prototype.paint = function (ctx, value, x, y, w, h, style, context) {
    // 错误类型不显示
        if(value!=null && typeof(value._error)!="undefined"){
        oldPaint.call(this, ctx, "", x, y, w, h, style, context);
    }
        else {
        oldPaint.apply(this, arguments);
    }
}



这个方法,把返回值是错误类型的公式都变成空了,所以在页面显示的看上去是空的,这样的单元格也要加上“/”,怎样判断这样的单元格呢?

6 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-23 16:17:19
沙发
您好:将oldPaint.call(this, ctx, "", x, y, w, h, style, context);改为
oldPaint.call(this, ctx, "/", x, y, w, h, style, context);即可。
回复 使用道具 举报
kotoYY
金牌服务用户   /  发表于:2017-10-23 16:41:23
板凳
ClarkPan 发表于 2017-10-23 16:17
您好:将oldPaint.call(this, ctx, "", x, y, w, h, style, context);改为
oldPaint.call(this, ctx, "/", ...

这样不行……我是点按钮触发 不是所有的都用“/”.
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-23 17:58:41
地板
有个思路,您可以在重绘是给单元格的tag中加上一个标记,点击按钮的时候,检查标记,如果有标记将其单元格的值转换为“/”
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-10-23 18:50:24
5#
使用 value instanceof GC.Spread.CalcEngine.CalcError 可以判断值是不是错误类型
回复 使用道具 举报
kotoYY
金牌服务用户   /  发表于:2017-11-13 10:17:30
6#
CCKan 发表于 2017-10-23 18:50
使用 value instanceof GC.Spread.CalcEngine.CalcError 可以判断值是不是错误类型

这个方法是什么意思?返回true代表是错误类型吗?
"#DIV/0!"算不算错误类型?
和typeof(val._error)有什么区别呢?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-11-13 15:46:17
7#
返回true,代表有公式错误
value.toString()中可以看到错误信息(这个可以用开发者模式来跟一下查看)
if(value instanceof GC.Spread.CalcEngine.CalcError){
  console.log("Formula Error"+value.toString());
}
#DIV/0!是公式错误的一种
_error是内部方法,目前可用但是如果版本升级后,不保证还能够继续使用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部