将Excel电子表格编译成.NET程序集的方法?

我有一个电子表格,我想编译成一个可以从C#调用的表单。

当然,我希望能够在读取计算结果之前将input更改为电子表格。

你推荐的方法是什么?

更新:

为了澄清,我想做一个现有的Excel电子表格作为可从.NET调用的Web服务提供。 我不能依赖Excel,因为它在Web服务器上运行。

更新:

我用下面的答案,它像一个魅力。 现在我可以在Excel中创build公式原型,然后直接将其转换为C#并将其编译为程序集。


将Excel文件作为服务器进程读取也包含此问题。

TMS中的 FlexCel API配合Flexcel Studio for .NET允许您将现有的Excel电子表格转换为C#代码,重新计算电子表格,并使用API​​调用从单元格中读取结果。

请参阅FlexCel ApiMate的video教程 。 video状态,报价:

ApiMate将把Excel文件转换成C#,VB.NET或Delphi.NET程序。

该文件还指出:

重新计算超过200个Excel函数。

和:

您可以将代码中的自己的函数添加到由FlexCel实现的已经很大的列表中,并将它们用作报表中的原生函数。

UPDATE

这里是从TMS技术支持澄清:


电子邮件问题:

我想要做以下事情:

  1. 将现有的.xlsx文件转换为C#代码,从数据库导入数据。
  2. 允许FlexCel为我重新计算电子表格。
  3. 从单元格中读取答案(用于C#代码中的其他地方)。
  4. 跳过将完成的.xlsx文件写入磁盘的步骤(我们不需要这个)。

简而言之,我想使用FlexCel作为“Web服务器Excel计算引擎”,因此我们不必在Web服务器上安装Excel来执行电子表格计算。

我描述的步骤可能吗? 还是我误解了这个组件是如何工作的?


通过电子邮件回复:

  1. 您可以直接从数据库加载文件(通过打开stream)或使用API​​Mate工具(包括在工具文件夹中)将文件转换为C#代码。
  2. 是的,FlexCel将使用XlsFile.Recalc()重新计算它
  3. 是的,您也可以阅读重新计算的值。
  4. 是的,如果你不想要,你不需要写出答案。

除此之外,为了将其用作重新计算引擎,我们有“RecalculateCell()”方法,它不会重新计算完整的电子表格,而只需要获取特定单元格中的值的单元格。 因此,如果例如你的结果是在A1中,你可以在A1中调用RecalcCell,它将只重新计算在A1中需要的所有单元格(包括依赖关系,所以如果A1有一个公式a2和a2 a3,所有3将被计算)。

还有一个RecalcExpression方法,它将重新计算任何公式的值,而无需将其写入单元格。 所以想象一下你在A栏有一列数字,你想知道总和。 你可以使用RecalcExpression(“= sum(A:A)”); 要知道总和,而不需要在B1中input公式,然后读取公式的值(当然也可以这样做)

从微软看来,似乎有一个名为Excel Services的框架“为您的应用程序开发计算引擎”

预告节选:

本文讨论:

  • Excel作为基于服务器的应用程序
  • Excel Services体系结构和API
  • 创buildpipe理的用户定义的function
  • 使用Excel Services构build自定义解决scheme

我从来没有使用过,但主页上的信息graphics是最令人鼓舞的。

感谢您问这:)

Calc4web将电子表格转换为C ++代码,可以从C#,Java等调用。

从网站引用:

Calc4Web为程序员提供了一个更好的方式来完成他们的工作:创build一个包含逻辑的小电子表格,并按下一个button将电子表格转换为C ++代码,可以从任何语言中调用C代码:C, C ++,C#,Visual Basic,Java以及任何其他可以调用DLL的语言。

我还怀疑,因为它将电子表格逻辑编译为纯粹的本地C ++代码,所以与Excel相比,网站的速度会非常快(网站的状态是“快5000倍”)。

查看ActiveMesa X2C ,一个将Excel电子表格转换为C#和C ++的工具。 (免责声明:我是作者。)

有关允许您使用Excel电子表格而不依赖于Excel的电子表格组件的列表,请参阅DevDirect电子表格组件 。

SyncFusion必不可less的计算 。

引用:

…您可以完全加载,操作和计算Excel电子表格,而不依赖于Excel。

没有办法将excel电子表格编译到c#代码中,它们在任何方面都不是相同的“东西”,用同样的方式,你不能编译你正在阅读的这个文本,或者把一个word文档编译成代码或者程序集某种。

你需要更具体的function,你会得到,这将有助于你得到一个答案。

有几种方法(在其他答案中指出)允许您访问Excel电子表格数据并使用它们,但这绝不是编译它们的方法。