write without office microsoft example create application excel interop xls excel-interop dev-to-production

without - microsoft office interop excel create excel file c#



La ejecución del servidor falló(excepción de HRESULT: 0x80080005(CO_E_SERVER_EXEC_FAILURE)) (5)

El mismo problema se resolvió para mí al "permitir la interacción de escritorio" para el servicio. (en la herramienta de configuración tomcat6w en la pestaña Iniciar sesión)

Estoy intentando convertir un archivo .xls en un archivo .xlsx en el lado del servidor utilizando la clase Microsoft.Office.Interop.Excel.Workbook la siguiente manera:

workBook.SaveAs("FILENAME_HERE", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

y me sale el siguiente error:

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). : System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at CALLING_METHOD_IN_MY_LIBRARY_HERE...

El problema es que este error solo se produce en el servidor de ensayo; en mi máquina local funciona bien

Cosas que he probado en el servidor de ensayo:

  1. ** 1) Ejecutar dcomcnfg open Component Services

2) Expanda Servicios de componentes "->" Computadora "->" Mi PC "->" la configuración DCOM "

3) Encuentra la "aplicación de Microsoft Excel".

4) Derecho a abrir el cuadro de diálogo Propiedades.

5) Haga clic en la pestaña "Seguridad",

6) "Permisos de inicio y activación, permisos de configuración, permisos agregados: la identidad se ejecuta bajo el usuario Adminstrator (este usuario), el usuario interactivo y los usuarios iniciales

7). Permisos de inicio y activación + Permisos de acceso + Permisos de configuración => Servicio de red IIS_IUSRS + agregado con control total **

2. Cambié la compilación del proyecto que convierte el archivo .xls de "Cualquier CPU" a "x86" en mi máquina local y publiqué esta biblioteca en el servidor.

¿Alguien descubrió cómo solucionar este problema? Estoy luchando para solucionar este problema por 2 días ahora.


Encontré este artículo que explica más a fondo este problema. Si esto ayuda, el error "80080005 Ejecución del servidor falló (excepción de HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))" podría ocurrir debido a las siguientes razones:

  1. La máquina tiene una alta carga de CPU y el proceso tarda mucho tiempo en iniciarse y no puede ejecutar CoRegisterClassObjects () en menos de 120 segundos.
  2. El servidor COM no se registra para los identificadores de clase correctos.
  3. El servidor COM se está deteniendo actualmente y hay una condición de carrera entre CoCreateInstance y la parte de detención del servidor COM.
  4. Existe un problema de seguridad en la forma en que se inicia el servidor COM (esta página parece sugerir contraseñas mal escritas o no tiene el privilegio de "Iniciar sesión como trabajo por lotes" para los servidores COM, pero de todos modos sugeriría volver a verificar esto información para su configuración específica)

https://blogs.msdn.microsoft.com/adioltean/2005/06/24/when-cocreateinstance-returns-0x80080005-co_e_server_exec_failure/


Intente agregar el método Thread.Sleep, como Thread.Sleep (2000) durante 2 segundos después de workBook.open y workBook.Save. Hay dos métodos. Si su archivo de Excel tiene muchos formatos, intente extender unos segundos más.


Solucioné este problema con esta solución: haga clic con el botón derecho en Servicios de componentes / Computadoras / DCOM Config / Microsoft Word97 - 2003 Propiedades del documento / Ficha General

establecer el nivel de autenticación: ninguno


Utilizando DCOMCNFG.exe. Ábralo y vaya a: Servicios de componentes -> Computadoras -> Mi PC -> Configuración DCOM -> Aplicación Microsoft Excel .

Abra las propiedades, seleccione la pestaña Identidad y seleccione el usuario interactivo.