在服务器上运行Excel – C#Interop Excel

我们正在通过C#.NET在Excel模板文件上执行以下操作(按顺序)。

  1. 打开Excel模板
  2. 从SQL视图中读取数据并写入Excel模板中的工作表
  3. 为复制的数据设置命名范围
  4. 刷新基于指定范围的数据透视表
  5. 密码保护并作为可下载的文件返回。

以下是所考虑的选项:1. Microsoft.Office.Interop.Excel – 驱动程序实现了上述所有function,但是,驱动程序需要Excel客户端工具安装在服务器上,而不是首选的选项,因为我们不能请求为所有的环境安装Excel。 2.第三方产品 – 一个名为Excel Package Plus的免费驱动程序似乎几乎符合我们所有的要求。 除了刷新数据透视表之外,我们几乎可以完成上述操作列表中的所有操作。 3.在现有的excel文件上写一个macros来刷新数据透视表 – 当用户打开该文件造成延迟时,会发生刷新,并且需要刷新数据透视表下载文件。

所以,显然有了以上所有的select,我们碰到了一个障碍。 我想知道是否有可能将Excel模板放在一台安装了excel的服务器上,并从Web服务器访问它。 这样我就可以使用Interop.Excel,而无需在我的Web服务器上安装驱动程序。 我不确定这是否会按预期工作。

不要在服务器上使用Interop。 我已经完成了,这是一场噩梦 – 你将会冻结进程,内存泄漏和性能下降。

我build议使用EPPLUS来处理所有可以使用的东西,并使用Open XML SDK来打开excel文件并设置命名范围。

Open XML SDK是用于编辑Offixe XML文档(包括Excel)的低级API。 你可以用Office做所有你能做的事情。 这是相当复杂的,所以我会build议使用epplus尽你所能,因为这避免了许多手工excel编辑的陷阱。

我记得有一个工具可以build立你的C#代码来构build你传递给它的文档 – 所以你可以传入一个带有指定范围的excel文档,看看这个工具是如何在代码中构build命名范围的。 我认为这个工具被包含在sdk中