2013-05-13 147 views
0

我想计算C#中卡方分布的右尾概率。 Excel可以使用下面的代码如何在C#中使用Excel公式#

= CHISQ.DIST.RT(100,4) 

其中100是卡方和4是自由度做该计算。

我想在C#中使用这个函数来计算;我尝试添加对“Microsoft.Office.Interop”的引用,但我无法找到使用它的方法!

我遇到了一些关于如何使用C#在Excel中进行公式化并在Excel中获得结果的主题,但不幸的是这不是我所需要的;我需要在C#中进行计算并使用C#获取结果。

+1

您是否使用Interop库创建并优化了工作表? – 2013-05-13 17:02:27

+5

这需要使用Excel吗?您应该可以轻松将其移植到C#。 http://www.codeproject.com/Articles/432194/How-to-Calculate-the-Chi-Squared-P-Value – 2013-05-13 17:04:02

+0

我之前检查过这个代码。我正在处理Chi-squq的ChIP-seq数据,比方说300!其相应的p值约为2.00E-30!该代码给出了这些数字的NaN或Infinity;但excel只是给出非常准确的结果,这就是为什么我更喜欢使用Excel。 – Hamed 2013-05-14 08:47:18

回答

2

如果你只是想要一个类似于Excel计算的计算,你应该考虑@ korolewi的建议评论。

如果你有实际使用Excel的引擎,你可以做

  1. 什么以前的海报建议,但是这将需要在Web服务器上安装的Excel的实例,它会在每次启动Excel代码被执行等。这是不好的做法,不被Microsoft支持
  2. 使用第三方工具,如Aspose.com的单元格。有了这个,你可以设置公式,计算公式,并从wookbook中获取值,而无需在服务器上实际打开Excel。
+0

我同意,如果你需要评估Excel公式,但不一定要用Excel本身(特别是如果这是在非交互式机器上完成的,例如服务器,尽管你没有提到是否是这种情况),第三第四方工具是要走的路。尽我所知,Aspose.Cells不支持CHISQ.DIST.RT功能。 SpreadsheetGear 2012 for .NET支持CHISQ.DIST.RT以及Excel 2010中引入的所有其他功能。免责声明:我为SpreadsheetGear担任技术支持工程师。 – 2013-05-13 22:41:18

+0

我很欣赏SpreadsheetGear的建议。但是没有任何方法使用公式而不使用任何第三方应用程序? – Hamed 2013-05-14 09:01:26

+0

我很难考虑使用外部库作为第三方应用程序,所以是的。您对原始问题的评论中的链接指向实现它的方式。 http://www.codeproject.com/Articles/432194/How-to-Calculate-the-Chi-Squared-P-Value有你可以用来做的DLL。 – wilsjd 2013-05-14 17:07:48

0

要使用Microsoft.Office.Interop.Excel在C#代码中使用“虚拟”Excel,您必须创建工作簿对象,在此工作簿上创建(至少)一个工作表对象 - 然后您可以使用互操作框中的Excel功能。

+0

这个问题清楚地说明了“我需要在C#中进行计算并在C#中获得结果”,并且使用Excel来完成它不是**他们需要的。当问题关于不使用Excel时创建Excel工作簿显然不是答案。 – 2013-05-13 17:29:59

+1

@KenWhite这肯定不是答案,但至少可以回答这个问题哦,需要做多少激烈的咕噜工作才能调用工作表函数。结果:这不是理想的方法。 – Brad 2013-05-13 17:45:02

+0

如果这不是一个答案,它不应该发布为一个。这可能是一个有用的评论,但答案应该这样做 - 为所问的问题提供一个答案。 – 2013-05-13 18:03:30