我正在做的是:向EPPlus运行时添加一个自定义函数。此函数将文本表达式作为参数(当然,文本表达式可以指定为参数,也可以放在我们引用的电子表格的某个单元格中)
到目前为止,一切顺利
然后我们在Excel/EPPlus之外计算这个表达式——这些表达式可以访问电子表格之外的数据,但也可以引用其他电子表格单元格。
返回电子表格也有问题——EPPlus不知道这些表达式中的内容以及它们的计算结果,也不知道它们是否引用了其他可能已经计算过的单元格。所以-没有依赖控制和可能的混乱。
问题:这个问题可以解决吗?我的意思是,当表达式求值函数检测到表达式引用了一个电子表格单元格时,它能告诉EPPlus先求值该单元格吗?或者至少解析表达式并检测依赖关系,然后以某种方式将此信息提供给EPPlus,以便它知道以什么顺序运行计算?
=MYEVAL("doSomeStuff('arg 1', Sheet.E4, Sheet.C4)")
MYEVAL将在工作表中运行。Calculate()调用——但是在MYEVAL内部,如果E4和C4单元格是自己计算的,并且可以在计算过程中更改它们的值,如何告诉EPPlus我们想要E4和C4单元格的当前值?
我不关心循环引用,我可以确保没有循环,只是简单地按照正确的顺序运行计算。
更新:
只是想知道,如果我们可以在调用中添加任意数量的参数,我们是否可以将依赖项放在参数列表中,如下所示:
=MYEVAL("doSomeStuff('arg 1', Sheet.E4, Sheet.C4)";E4;C4)
然后EPPlus就会知道,在调用MYEVAL之前,它必须计算E4和C4细胞。这是否足以强制执行此类依赖关系?