找回密码
 立即注册

QQ登录

只需一步,快速开始

nutstore
金牌服务用户   /  发表于:2022-7-20 09:32  /   查看:1726  /  回复:7
1金币
Spread.Sheets.CalcEngine.evaluateFormula 给一个 '' 或者 '=' 作为公式也会卡死。
因为这里的公式需要用户输入,无法控制其输入内容是什么,希望当是不合法公式的时候能够直接抛错或者给一个公式检测的办法,能够在计算前就知道当前公式是否合法

最佳答案

查看完整内容

测试了一下,在15.0.7中如果是公式不对,会抛出异常,也可以捕获到,你那边如果卡死的话,不排除是其他的原因,建议发一个重现情况的demo上来

7 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-20 09:32:15
来自 2#
测试了一下,在15.0.7中如果是公式不对,会抛出异常,也可以捕获到,你那边如果卡死的话,不排除是其他的原因,建议发一个重现情况的demo上来

image.png405540770.png
回复 使用道具 举报
nutstore
金牌服务用户   /  发表于:2022-7-20 16:09:51
3#
Richard.Ma 发表于 2022-7-20 11:51
测试了一下,在15.0.7中如果是公式不对,会抛出异常,也可以捕获到,你那边如果卡死的话,不排除是其他的原 ...

是我的代码有问题,不过这里计算引擎为啥抛出一个字符串
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-20 18:13:06
4#
evaluateFormula 这个方法中的formula参数如果无法计算的话,应该统一都是以“无效的公式”字符串作为抛出的错误,这样也方便用户查找问题。没有特别的原因
回复 使用道具 举报
athenadeveloper
注册会员   /  发表于:2022-10-12 14:03:25
5#
请问一下,如果调用evaluateFormula ,传入一个异步函数,如何捕获到该函数的校验结果,比如函数参数不达标,会出现alert提示,但try catch无法捕获到。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-12 17:45:39
6#
异步函数确实是没有办法从外部try catch 的。这个目前没有办法, 你捕捉错误还是在定义的异步函数本身内部写代码就行

回复 使用道具 举报
athenadeveloper
注册会员   /  发表于:2022-10-12 18:06:59
7#
再请教下,如何脱离单元格,校验即将输入的函数的正确性: 输入格式正确,且有返回值;谢谢。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-13 11:06:07
8#
通过evaluateFormula 方法就可以,一方面你可以通过try catch捕捉到无法计算的异常

另外,如果可以计算,但是返回的结果是这样
image.png747877502.png
其中的_error是#value!,DIV/0!等等这种错误提示,这个是和excel的公式错误结果一致的,我帮你找了一个链接。有相关介绍

https://baijiahao.baidu.com/s?id ... r=spider&for=pc

如果计算正常,那么只会返回一个计算结果,数字或者字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部