将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技术支持澄清:
电子邮件问题:
我想要做以下事情:
- 将现有的.xlsx文件转换为C#代码,从数据库导入数据。
- 允许FlexCel为我重新计算电子表格。
- 从单元格中读取答案(用于C#代码中的其他地方)。
- 跳过将完成的.xlsx文件写入磁盘的步骤(我们不需要这个)。
简而言之,我想使用FlexCel作为“Web服务器Excel计算引擎”,因此我们不必在Web服务器上安装Excel来执行电子表格计算。
我描述的步骤可能吗? 还是我误解了这个组件是如何工作的?
通过电子邮件回复:
- 您可以直接从数据库加载文件(通过打开stream)或使用APIMate工具(包括在工具文件夹中)将文件转换为C#代码。
- 是的,FlexCel将使用XlsFile.Recalc()重新计算它
- 是的,您也可以阅读重新计算的值。
- 是的,如果你不想要,你不需要写出答案。
除此之外,为了将其用作重新计算引擎,我们有“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电子表格数据并使用它们,但这绝不是编译它们的方法。