我需要从LINEST Excel函数中获取信息。 我想知道是否有类似function的图书馆,或者如果有可能以某种方式在C#中使用本机Excel函数? 我正在使用MVS 2010和使用Windows窗体可能很重要。 我写了一个最小二乘估计函数,它只计算双因子模型的参数,但是我需要计算多于两个因子的模型的参数。
PS其实我没有谷歌的答案,我看到有人用包Microsoft.Office.Excel来计算必要的信息,但没有这样的导入在我的IDE。 我不想发明一个轮子,所以我很欣赏任何信息。 谢谢。
更新 :最后,我添加了一个Microsoft.Office.Excel引用到我的项目,并解决了我的问题。 源代码附在下面。 结果是2D Excel类似的数组。 代码写的很匆忙,所以这不是很好,需要修改。 我只希望它能帮助别人。 /如果您需要帮助,请告诉我
Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction; List<double> x = new List<double> { 107, 109, 110, 113, 120, 122, 123, 128, 136, 140, 145, 150 }; List<double> y = new List<double> { 102, 105, 108, 110, 115, 117, 119, 125, 132, 130, 141, 144 }; object result = wsf.LinEst(y.ToArray(), x.ToArray(), true, true); Array resArray = (Array)result; double[,] linest = new double[5, 2]; int i = 0, j = 0; Console.WriteLine("{0,15:f10}", resArray.Length); foreach (var element in resArray) { if (i == 0 || i == 2 || i == 4 || i == 6 || i == 8) { linest[j, 0] = (double)element; } else { linest[j, 1] = (double)element; j++; } i++; } Console.WriteLine(); for (i = 0; i < linest.GetLength(0); i++) { for (j = 0; j < linest.GetLength(1); j++) Console.Write("{0,25:f13}", linest[i, j]); Console.WriteLine(); }
尝试数学网络数值中的线性代数库,并避免使用excel。