C# .NET:如果我的.NET使Office自动化,客户是否必须安装Office?

C# .NET:如果我的.NET使Office自动化,客户是否必须安装Office?,c#,com,ms-office,C#,Com,Ms Office,如果我创建一个程序,它位于一个小的偏僻区域,使用Excel自动化: 当需要Excel时,应用程序会失败吗 还是应用程序无法启动 更新 让我问同样的问题,但用一种更为冗长的方式: 该应用程序是否可以在 99.9%从未使用需要Excel的功能的用户 0%的用户,因为未安装Excel 让我用另一种方式问同样的问题: 引用COM互操作dll的应用程序是否无法初始化 让我用另一种方式问同样的问题: 不使用Excel但引用COM互操作DLL的应用程序是否会启动失败 让我用另一种方式问同样的问

如果我创建一个程序,它位于一个小的偏僻区域,使用Excel自动化:

当需要Excel时,应用程序会失败吗

还是应用程序无法启动


更新 让我问同样的问题,但用一种更为冗长的方式:

该应用程序是否可以在

  • 99.9%从未使用需要Excel的功能的用户

  • 0%的用户,因为未安装Excel

让我用另一种方式问同样的问题:

引用COM互操作dll的应用程序是否无法初始化


让我用另一种方式问同样的问题:

不使用Excel但引用COM互操作DLL的应用程序是否会启动失败


让我用另一种方式问同样的问题:

如果未安装Excel,且该应用程序依赖于Office主互操作DLL,则不使用Excel的应用程序是否可用


让我用另一种方式问同样的问题:


如果我的应用程序不使用Excel,用户是否必须安装Excel?

我认为它在运行时会失败,因为互操作程序集应该能够在没有客户端系统上可用的COM组件的情况下加载


更新:运行时应该意味着你需要它的时候

如果您使Office自动化。。。你得有办公室

话虽如此,如果您将问题转化为:我是否可以在没有Excel的情况下创建Excel电子表格


有许多第三方控制来实现这一点;您可以直接写入MS SpreadML XML规范(;或使用这样做的第三方库(如).

在Win32中使用COM,它将在需要时失败。

代码将正确执行,直到它尝试调用自动化库,那时它将生成一个异常。

我有一个使用Excel automation的应用程序,我可以肯定地说它将在运行时失败,而不是在加载时。事实上,我们检查它是否正确即使已安装,如果找到“在Excel中显示数据”按钮,也只显示该按钮(但PIA已部署到所有安装).

哪个运行时?开始时运行时,还是使用时运行时?因此,您是否建议应用程序可以正常启动,但在需要Ecxel时失败?如果代码是使用Office对象引用编译的,则会出现运行时错误。但是,如果使用反射延迟绑定,则可以避免运行时失败。但你是在摆弄风车!要么在前面需要Office,要么需要代码,这样你就不需要它了(首选!).同意,对.NET有什么见解吗?.NET interop只调用COM库。为什么不在没有Excel的计算机上尝试呢?+1是Stumproot的评论。这就是虚拟机如此强大的原因之一。避免混淆,只需尝试一下。特别是,我相信它会生成System.Runtime.InteropServices.COMException。如果你好奇的话,类似于“检索CLSID为{000209FF-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80040154。”