Office(Excel)使用.NET Core在Mac OSX上进行COM互操作?
我为一个目前专门在C#/ .NET中创buildWindows桌面应用程序的团队工作,该团队通过Office COM Interop与Microsoft Excel的本地用户实例进行交互操作。 我目前负责指定一个新产品,但是我被告知,除非应用程序可以在Mac和Windows上运行,否则这个项目不会继续下去 – 也就是说,我们必须能够生成Mac版本的应用程序可以本地安装在OSX上,并与Mac用户的Microsoft Excel实例的对象模型进行交互。
使用Parallels,Mono或Wine运行应用程序(请参阅OSX中的COM Interop Through Wine ,这是从来没有回答的)不是一个解决scheme,因为应用程序的规范要求用户机器没有任何修改。 我们只需要假设用户有一个Excel的许可本地副本运行,并与…这是我们一直在Windows上做的,它在哪里工作很好。
我认为.NET核心是答案,但我无法find任何地方,它肯定地说,我们可以(或将能够)从C#访问Excel对象库时在Mac OSX上运行.NET Core与本地副本的Excel为Mac安装。 有人可以指点我已经讨论过的地方,或者不是,告诉我如何从微软那里find如果这是在他们的.NET核心路线图?
我收到了MSDN上一个类似措辞问题的有益反馈。 我也在.NET Core Github上发布了一个问题,但是我想这个问题的答案已经很清楚了,如下所示:
- .NET Core团队可能会说服他们添加对.NET Core Class库中的Office.Interop.Excel命名空间的访问权限,但仅限于Windows
- 对于OSX上的.NET Core,不能这样做,因为环境不适合交换COM对象。
- 这只留下两个选项来处理Excel for Mac中的对象,这两个选项都已经存在:embedded式VBA或Javascript(Office加载项)。
- Office Addins是Excel中面向Web驱动的面向对象的一个很好的新解决scheme – 它的多平台特性非常棒 – 所以享受微软开发的主要焦点。 然而,它并不打算与pipe理复杂电子表格的COM性能相匹配,因为这不是它的焦点。
- 这意味着没有任何解决scheme可以使用C#来pipe理Mac中Excel的对象,就像在Windows上一样,并且看起来没有任何可能。
底线:非常受欢迎的.NET Core计划看起来像是一个修复,但可惜的是,由于OSX的架构限制,
我已经提交了这个答案,因为我认为我已经到了调查的最后,但是如果有人认为上述任何一个都是不正确的,请大声呼喊!
谢谢。