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

Con*_*ngo 5 .net c# excel

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

当然,我希望能够在读取计算结果之前更改电子表格的输入.

你推荐的方法是什么?

更新:

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

更新:

我使用了下面的答案,它就像一个魅力.现在我可以在Excel中对公式进行原型设计,然后将其直接转换为C#并将其编译为程序集.


Excel文件作为服务器进程读取时也会涉及此问题.

Con*_*ngo 5

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

请参阅FlexCel ApiMate视频教程.视频说明,引用:

ApiMate会将Excel文件转换为C#,VB.NET或Delphi.NET程序.

文档还说明:

重新计算200多个Excel函数.

和:

您可以将代码上自己的函数添加到FlexCel实现的已经很大的列表中,并将它们用作报表中的本机函数.

UPDATE

以下是TMS技术支持的说明:


电子邮件问题:

我想做以下事情:

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

简而言之,我想将FlexCel用作"Webserver Excel计算引擎",因此我们不必在Web服务器上安装Excel来执行电子表格计算.

我描述的步骤是否可行?或者我误解了组件的工作原理?


电子邮件回复:

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

除此之外,为了将它用作重新计算引擎,我们使用"RecalculateCell()"方法,不会重新计算完整的电子表格,只会重新计算获取特定单元格中的值所需的单元格.因此,如果您的结果是在A1中,您可以在A1中调用RecalcCell,它将仅重新计算获取A1中的值所需的所有单元格(包括依赖项,因此如果A1具有a2的公式,a2具有a3,所有3将被计算).

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