【问题标题】:Run Excel on Server - C# Interop Excel在服务器上运行 Excel - C# 互操作 Excel
【发布时间】:2023-03-25 16:09:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# vba excel excel-interop


    【解决方案1】:

    不要在服务器上使用互操作。我已经做到了,这是一场噩梦——你会遇到进程冻结、内存泄漏和性能下降的问题。

    我建议在所有可以使用它的地方使用 EPPLUS,并使用 Open XML SDK 打开 excel 文件并设置命名范围。

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

    我记得有一个工具可以为您构建 C# 代码来构建您传递给它的文档 - 因此您可以传入一个带有命名范围的 excel 文档,并查看该工具如何在代码中构建命名范围。我认为该工具已包含在 sdk 中

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2018-04-24
      相关资源
      最近更新 更多