Excel evaluate()返回对象[,]?

时间:2011-12-20 17:21:23

标签: c# .net excel

我正在编写一个快捷键事件处理程序,以便在用户键入函数然后按下键盘快捷键时实现活动。

据我了解ExcelApp.Evaluate("myFunc()")是要走的路。

但是,在我的XLL Addin中,myFunc返回类型object[,],而Evaluate()只返回类型对象

我有什么方法可以将object转换为object[,]吗?

编辑:

object myArray = ExcelApp.Evaluate(functioname);

if (myArray is object[,])
{
    int height = myArray.GetLength(0); //Does not recognise GetLength, even though it's an object[,] method

1 个答案:

答案 0 :(得分:1)

Evaluate可能是要走的路,也可能不是,取决于你想要什么 如果你想真正评估像地址这样的东西,那么是的,它是 否则,有Application.Run

至于问题,Excel的函数返回OLE Variant,它可能包含/引用任何内容,包括数组。从Excel方面来说,处理这个不需要代码的任何努力。

编辑:

object[,] foo = (object[,])this.Application.WorksheetFunction.Transpose(new object[] {1,2,3,4} );

MessageBox.Show ( foo.GetLength(0).ToString() );  // shows 4