C# 如何在C语言中使用Excel公式#

C# 如何在C语言中使用Excel公式#,c#,excel,chi-squared,C#,Excel,Chi Squared,我想计算C#中卡方分布的右尾概率。 Excel可以使用以下代码进行此计算 = CHISQ.DIST.RT(100,4) 其中100表示卡方,4表示自由度 我想用C#中的这个函数来计算;我尝试添加对“Microsoft.Office.Interop”的引用,但找不到使用它的方法 我遇到了一些关于如何使用C#在Excel中做公式并在Excel中得到结果的话题,但不幸的是,这不是我需要的;我需要在C#中进行计算,并在C#中获得结果。要使用Microsoft.Office.Interop.Excel在

我想计算C#中卡方分布的右尾概率。 Excel可以使用以下代码进行此计算

= CHISQ.DIST.RT(100,4)
其中100表示卡方,4表示自由度

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


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

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

< P>如果您只想进行与Excel计算类似的计算,则应该考虑@ KoRoWi的建议注释。 如果您必须实际使用Excel的引擎,您可以这样做

  • 如前一张海报所示,但这需要在web服务器上安装一个Excel实例,并在每次执行代码时启动Excel,等等。这是一种不好的做法,Microsoft不支持
  • 使用第三方工具,如Aspose.com的Cells。这样,您就可以设置公式,计算公式,并从wookbook中获取值,而无需在服务器上实际打开Excel

  • 您是否使用互操作库创建了excel工作表?是否有需要使用excel的原因?您应该能够轻松地将其移植到C#。我以前检查过这个代码。我在处理芯片序列数据,其中卡方是,比方说,300!对应的p值约为2.00E-30!代码给出了这些数字的NaN或无穷大;但excel只给出非常精确的结果,这就是为什么我更喜欢使用excel。问题清楚地表明“我需要用C#进行计算,并用C#获得结果”,而使用excel并不是他们需要的。当问题是关于不使用Excel时,创建Excel工作簿显然不是答案。@KenWhite这肯定不是答案,但这至少回答了一个问题:哦,你需要做多少繁重的工作?只需调用工作表函数即可。结果:这不是理想的方法。如果这不是一个答案,就不应该作为一个答案发布。这可能是一个有用的评论,但答案应该是这样的——提供对所问问题的答案。@KenWhite,正如你提到的,我不想使用Excel工作簿。简单地使用Excel工作簿对我来说是没有效率的,因为每次运行我都需要进行大约1000000次的计算;因此,我必须尽可能使用更有效的方法。@KenWhite这可能不是最后一部分的答案,但在这一点上可能会有所帮助:“我尝试添加对“Microsoft.Office.Interop”的引用,但我找不到使用它的方法!”。还有“如何在C#中使用Excel公式”-而不是“在C#中计算某些东西,类似于在Excel中的实现”。虽然OP在最后一句话中说“我需要[…]用C#计算并用C#得到结果”,但他们在评论中补充说“excel只给出非常准确的结果,这就是为什么我更喜欢使用excel”。因此,这个答案很有帮助,与“显然不是答案”相去甚远:)我同意,如果您需要评估Excel公式,但不一定要使用Excel本身(尤其是在非交互式计算机(如服务器)上进行评估,尽管您没有提到是否需要评估),第三方工具是一种可行的方法。据我所知,Aspose.Cells不支持CHISQ.DIST.RT函数。SpreadsheetGear 2012 for.NET支持CHISQ.DIST.RT以及Excel 2010中引入的所有其他功能。免责声明:我作为技术支持工程师为SpreadsheetGear工作。我感谢SpreadsheetGear的建议。但是,没有使用任何第三方应用程序的公式,没有任何方法吗?我几乎不考虑使用外部库作为第三方应用程序,所以是的。评论中指向您原始问题的链接指向了解决方法。具有可用于执行此操作的DLL。