Interop Excel метод LinEst завершается ошибкой с DISP_E_TYPEMISMATCH - PullRequest
3 голосов
/ 24 апреля 2010

Я столкнулся с проблемой при выполнении функции 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.

1 Ответ

2 голосов
/ 24 апреля 2010

Преобразовать списки 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);
...