如果未安装MS Office,则排除office.interop

时间:2014-10-23 16:24:45

标签: c# winforms visual-studio office-interop

我的问题是我的程序在没有安装办公室的计算机打开时运行时崩溃。

我正在编写一个程序,由不同计算机上的多个用户运行。一些用户计算机将安装MS Office,其他用户则不会。它是一个多表单程序,为了便于参考,可以将其视为ERP类型的软件。

我在程序引用中包含了Microsoft.Office.Interop.Excel和Microsoft.Office.Interop.Outlook。我的应用程序中的某些子表单同时使用excel和outlook功能,但很多子表单都没有。

我希望安装了办公室的用户都能够运行该程序。也许如果他们没有安装办公室,他们会收到一个错误,说明如果他们点击一个通常会导出excel数据电子表格的按钮就不会。

有没有办法实现这个目标?

我想避免第三方图书馆,因为在这些工作站上不需要在所有计算机上安装办公室,我还想管理一个程序而没有两个单独的程序来管理哪些会共享表单和功能。

2 个答案:

答案 0 :(得分:2)

根据提到的限制 - 没有第三方库,某些用户计算机上没有办公室,也没有2个版本的程序//将Excel文件作为数据源读入程序并以这种方式处理数据。对于你提到的地方"导出Excel电子表格"你可以使用ODF / ODS。

答案 1 :(得分:1)

我设置了一个新表单并测试了我的应用程序中的具体内容导致程序崩溃。我发现包括办公室参考不会引起问题。另外添加using Microrosoft.Office.Interop.Excel;不会导致问题。

然而,我在主程序中调用了一个类,它创建了Excel应用程序,工作簿和工作表,尽管实际上没有在程序加载时使用这些项目。类中可能导致问题的局部变量的示例是private Excel.Application XLApp = new Excel.Application();

在允许用户运行可能导致程序崩溃的任何内容之前,我可能会使用像@Jcl建议的解决方案。