2013-05-13 140 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