2012-09-29 15 views
6

En mi programa C#, estoy usando el ensamblado de interoperabilidad de Excel 2010. Con esto estoy leyendo & escribiendo datos en el archivo Excel. Y ejecutar bien en el cuadro dev (contiene Office 2010). En la máquina del cliente, a pesar de que tienen Office 2010 y Office PIA, se observa una excepción a continuación, aumenta en la llamada al método WriteToExcel().Excel interop MissingMethodException

Unhandled Exception: System.MissingMethodException: Method not found: 'System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.GUID)'. 

A continuación se muestra el fragmento de código.

[STAThread] 
static void Main(string[] args){ 

     // read user input, process and write data to Excel 
     WriteToExcel(); 
} 

[STAThread] 
static void WriteToExcel(){ 
    Application xlsApplication = new Application(); 
    Workbook xlsWorkbook = xlsApplication.Workbooks.Open(excelFilePath); 
    // write data to excel 
    // close up    
} 
+0

¿Se puede depurar en la máquina del cliente? ¿También funcionó la respuesta de Furqan? – JMK

+1

Instala .NET 4.5 en esa máquina. –

+0

@HansPassant Buen punto, tal vez el OP tiene 4,5 instalado en la máquina de desarrollo, y está apuntando a 4.0 (en la máquina cliente) y este es un error que se enmascara porque 4.5 reemplaza al compilador 4.0 y por lo tanto enmascara errores en 4.0? – JMK

Respuesta

5

Problema resuelto después de bajar la versión .NET a 4,0. Anteriormente, mi devbox tiene 4.5 y la aplicación está compilada con esta versión. Mi máquina cliente tiene una versión 4.0, al bajar la versión de .NET resolvió el problema.

+1

Esto puede parecer obvio para todos, excepto para mí, pero simplemente baje la configuración de "Marco de destino" en la página de propiedades de la aplicación en VS. Inicialmente pensé que era necesario desinstalar 4.5 e instalar 4.0 en mi deviro deviro. – aland

+0

Gracias por publicar esta respuesta. Estaba teniendo el mismo problema del marco de destino y no me di cuenta hasta que leí tu publicación. – EMR

0

intenta utilizar el siguiente código:

[STAThread] 
static void WriteToExcel() 
{ 
    Application xlsApplication = new Application(); 
    var missing = System.Type.Missing; 
    Workbook xlsWorkbook = xlsApplication.Workbooks.Open(excelFilePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); 
    // write data to excel 
    // close up    
} 
+0

intenté esto, pero no tuve ningún efecto. – Mahender

+0

Agradable que lo haya resuelto :) –

Cuestiones relacionadas