我有一个对象模型,我需要用户能够基于该对象模型创建公式,并且还需要使用一些内置函数。例如:
AddWorkDays(MyObject.StartDate, 3)
MyObject具有用户可以访问的各种属性。我们可能还需要执行一些If / Then语句。用户对Excel公式非常熟悉,因为这是他们当前的工作方式。
我看到两个可能的选择:
选项1的问题是我不想重新发明轮子。我希望有人已经构建了一个解析器,可以处理基本功能和数学运算,并且基于传入的类对上下文具有感知能力。我似乎找不到类似的东西。
选项2将允许用户重用他们现有的Excel知识来构建公式,例如:
=if(MyObject.Type = "A", AddWorkDays(MyObject.StartDate, 3), AddWorkDays(MyObject.StartDate, 5)
我看到XLParser被宣传为非常适合解析Excel公式,但是似乎我需要添加Context-aware部分来读取和验证MyObject上的属性。
欢迎任何有关进行操作的经验,示例,警告等
答案 0 :(得分:0)
我通过使用FLEE库解决了此问题:https://github.com/mparlak/Flee
它支持“上下文”,您可以在其中定义应在上下文中的变量。开箱即用,它支持诸如加,减,甚至是基本IF语句之类的常规语法。添加您自己的功能很容易扩展。通过定义一些常用函数,我使它像Excel一样:AND,OR,MIN,MAX。这只需要执行不到100行代码。
我用它来处理相对较大的数据集(200,000个项目,每个项目有5个公式),如果使用正确,它将在10秒内处理完。