某些系统上的Excel互操作MissingMethodException

时间:2015-04-23 04:49:20

标签: c# asp.net .net c#-4.0 c#-3.0

在我的C#程序中,我使用的是Microsoft.Office.Interop.Excel。有了这个,我正在阅读&将数据写入excel文件。在一台计算机上,即使它有Office 2007,也会看到下面的异常,在GetComponentPath()方法调用时会引发。

未处理的异常:System.MissingMethodException:找不到方法:' System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.GUID)'。

这是我的代码:

public static string GetComponentPath(OfficeComponent _component)
{
    string toReturn = string.Empty;
    string _key = string.Empty;
    try
    {
        Microsoft.Office.Interop.Excel.Application _excelApp = null;
        _excelApp = new Microsoft.Office.Interop.Excel.Application();
        if (_excelApp != null)
        {
            Console.WriteLine("Excel is installed");
        }
        else
        {
            Console.WriteLine("Excel not found.");
        }               
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error \n" + ex.ToString());
    }
    return toReturn;
}

public enum OfficeComponent
{
    Word,
    Excel,
    PowerPoint,
    Outlook
}

1 个答案:

答案 0 :(得分:1)

问题:您已在本地计算机上使用更高版本的.NET Framework开发了应用程序,并在具有较低版本.NET Framework的远程PC上运行该应用程序。

注意:如果您将应用程序定位为Heigher版本的.NET Framework,则它将无法在较低版本上运行。

解决方案:您需要将其定位到远程PC上可用的.NET Framework较低版本,以便在远程PC上运行。

第1步:右键点击project - 选择properties

第2步:Target Framework.NET Framework x.x更改为.NET Framework x.y

注意:x.x更高,x.y是远程PC或更低版本的低版本。