我有一个基于VSTO的excel插件和基于XLL的UDF。我们已经实现了RTD服务器来更新实时数据。 我面临的问题是在range上设置公式。我收到以下异常:
位于System.RuntimeType.ForwardCallToInvokeMember的Stacktrace(字符串memberName,BindingFlags标志,对象目标,Int32 [] aWrapperTypes,MessageData&msgData)
在Microsoft.OfficeXP.Excel.Range.set_Formula(Object)
我在excel范围内设置了大约10000个或更多个公式。这会在将公式设置为二维数组的块中发生
range.Formula = FormulaMatrix; // string [,] FormulaMatrix-> [0,0]-> [1000,0]
我能够发现问题是Excel无法调用RTD的Connect Data。 我尝试以块为单位设置范围,并为每个块创建一个任务,然后使用WinformsSynchronization Context在UI线程上运行它。 我将可用的任务计划程序用作
var Scheduler = TaskScheduler.FromCurrentSynchronizationContext(); 并在此调度程序上开始执行任务。
但这进一步加剧了这个问题,我更经常收到上述例外情况。 上面的任何帮助将不胜感激
PS:我检查了范围是基于1的,并且本地化没有问题。在Range上使用FormulaLocal也会发生同样的问题
谢谢