c# - 使用 .NET Core 在 Mac OSX 上进行 Office (Excel) COM 互操作?

标签 c# excel macos .net-core com-interop

我所在的团队目前专门使用 C#/.NET 创建 Windows 桌面应用程序,这些应用程序通过 Office COM Interop 与 Microsoft Excel 的本地用户实例进行交互。我目前负责指定一个新产品,但我被告知,除非该应用程序可以在 Mac 和 Windows 上运行,否则该项目不会继续进行——也就是说,我们必须能够生成该应用程序的 Mac 版本它可以在 OSX 上 native 安装并与用户的 Microsoft Excel for Mac 实例的对象模型进行交互。

使用 Parallels、Mono 或 Wine 运行应用程序(请参阅 COM Interop Through Wine in OSX,该问题从未得到解答)不是解决方案,因为应用程序的规范要求用​​户计算机不得以任何方式进行修改。我们只需假设用户运行了经过许可的 Excel 本地副本,然后使用它......这就是我们一直在 Windows 上所做的,在 Windows 上效果很好。

我认为 .NET Core 是答案,但我找不到任何地方明确表明,当使用本地计算机在 Mac OSX 上运行 .NET Core 时,我们可以(或将能够)从 C# 访问 Excel 对象库安装了 Excel for Mac 的副本。有人可以指出我已经讨论过这个问题吗?但如果没有,请告诉我如何从 Microsoft 那里了解这是否在他们的 .NET Core 路线图中?

最佳答案

我从 MSDN 上类似措辞的问题中收到了一些有用的反馈。我也在 .NET Core Github 上发布了一个问题,但我想答案已经很清楚了,如下:

  • 也许可以说服 .NET Core 团队在 .NET Core 类库中添加对 Office.Interop.Excel 命名空间的访问权限,但仅限于 Windows
  • 这无法在 OSX 上的 .NET Core 上完成,因为环境是 不适合交换 COM 对象。
  • 这使得在 Excel 中操作对象只剩下两个选项: Mac,两者均已存在:嵌入式 VBA 或 Javascript (Office 加载项)。
  • Office Addins 是面向网络驱动、面向数据的出色的新解决方案 Excel 中的对象 - 其多平台特性非常棒 - 因此享受主要焦点 来自微软的开发。然而,它并不旨在成为任何 与 COM 管理复杂电子表格的性能相匹配, 因为那不是它的重点。
  • 这意味着没有在 Excel 中管理对象的解决方案 对于 Mac,使用 C#,就像在 Windows 上一样,并且有 看来没有任何前景。

底线:非常受欢迎的 .NET Core 计划看起来像是一个修复程序,但遗憾的是并非如此,因为 OSX 上的架构限制。

我提交此作为答案是因为我认为我已经对此问题进行了询问,但如果有人认为以上任何内容不正确,请大声喊叫!

谢谢。

关于c# - 使用 .NET Core 在 Mac OSX 上进行 Office (Excel) COM 互操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41172984/

相关文章:

c# - 如果您从 List<T> .Remove() 中删除特定项目,它是否也会删除 'empty slot' ?

xcode - 从 Lion 10.7.2 卸载 Xcode 3.2.6

iphone - 当谈论 iPhone OS 中的 View 大小时,我应该谈论 "pixels"吗?

excel - 有没有办法将 mac 终端输出直接保存到文件中?

excel - Stata:从 Excel 导入时以小写重命名变量

vba - Excel-VBA .Range ("NamedRange").Row 返回不同的行然后范围所在的位置

c - Mac OS/X 上的 C 程序如何得知用户双击打开了关联的文件?

c# - schtasks 表示状态为 "could not start"

c# - 在网站上实现 'Search' 功能

c# - 如何提高将 byte[] 转换为 int 的性能?