KevinChen 发表于 2020-12-28 18:04:09

SpreadJS 如何自定义公式提示信息 Part III



本文是《SpreadJS 如何自定义公式提示信息》系列的第三篇,第一、二篇请参考:
SpreadJS 如何自定义公式提示信息 Part I
SpreadJS 如何自定义公式提示信息 Part II
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++






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

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

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





页: [1]
查看完整版本: SpreadJS 如何自定义公式提示信息 Part III