Interop Excel方法LinEst失败,显示DISP_E_TYPEMISMATCH。

3

我在使用Excel的LinEST函数时遇到了问题。

我的程序如下:

MyExcel.Application xl = new MyExcel.Application();
MyExcel.WorksheetFunction wsf = xl.WorksheetFunction;
List<int> x = new List<int> { 1, 2, 3, 4 };
List<int> y = new List<int> { 11, 12, 45, 42 };
object o = wsf.LinEst(x, y, true, true);

命名空间是using MyExcel = Microsoft.Office.Interop.Excel;

程序编译顺利,但在运行时抛出错误。

{System.Runtime.InteropServices.COMException (0x80020005): Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))

实际上这是我第一次使用Excel函数,所以我无法继续进行。如果有人遇到过这种情况并解决了,请帮助我。

我正在使用C# 3.0。


你尝试过将返回类型从object改为var吗? - Oded
谢谢,我得到了答案。我们需要将其转换为数组,如下:object o = wsf.LinEst(y.ToArray(), x.ToArray(), false, true); - Newbie
1个回答

2

将列表x和y转换为数组:

    MyExcel.Application xl = new MyExcel.Application();
    MyExcel.WorksheetFunction wsf = xl.WorksheetFunction;
    List<int> x = new List<int> { 1, 2, 3, 4 };
    List<int> y = new List<int> { 11, 12, 45, 42 };
    //object o = wsf.LinEst(x, y, true, true);
    object o = wsf.LinEst(y.ToArray(), x.ToArray(), false, true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接