找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-28 18:04  /   查看:3037  /  回复:0
本文是《SpreadJS 如何自定义公式提示信息》系列的第三篇,第一、二篇请参考:
SpreadJS 如何自定义公式提示信息 Part I
SpreadJS 如何自定义公式提示信息 Part II
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++





三、如何解析公式(尤其是多层嵌套公式),并给出具体的提示信息?

通过前两篇的铺垫,我们打通了光标事件、展示时机两大难点。本篇来解决最麻烦的解析公式问题。
我在第一篇中提到,公式提示信息分两种:
1、公式补全,也就是当用户输入不完整公式时,提示信息应当是一个列表,我们在列表中会罗列出系统中支持的所有公式的模糊检索结果以及公式的描述信息。
2、公式参数提醒,当用户输入了完整的公式后,进入参数填写时,我们要提示客户参数的个数和形式。
针对最复杂的解析公式问题,好在SpreadJS的FormulaTextBox暴露了一个parseInternal方法可供我们调用,调用方式:
  1. fbx.parseInternal(fbx.text(), sheet, sheet.getActiveRowIndex(), sheet.getActiveColumnIndex())
复制代码
这就是为何我们要在Demo中绑定一个隐藏的FormulaTextBox供我们使用的原因。

另外,针对公式和描述信息、以及参数信息,我们可以调用
  1. GC.Spread.CalcEngine.Functions.findGlobalFunctions();
复制代码
来获取全局公式的定义,并通过
  1. func.description()
复制代码
获取到每个function的描述信息(包括了参数信息)
综上,我们已经打通了所有需要依赖的接口,剩下的就是纯JS编码了,具体参考附件Demo的实现吧。谢谢~





自定义公式提示信息_V14.0.2.zip

836.27 KB, 下载次数: 71

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部