xceed c# asp.net ms-word asp.net-4.0 openxml

c# - xceed - Interop.Word Documents.Open es nulo



xceed word (7)

Como Paulie afirmó en su comentario sobre OP, creo que el problema se debe en gran parte a las bibliotecas del servidor web. Es posible que pueda piratear para que esto funcione en una aplicación web, pero no lo recomendaría.

EDIT : Argh, he leído mal el post y acabo de asumir Excel. Eso es lo que la mayoría de la gente busca cuando usa Office.Interop en mi experiencia;)

Hay una biblioteca abierta que funciona con formatos DocX ( ingrese la descripción del enlace aquí ). Desafortunadamente , admite en la página que las conversiones a formatos como PDF son prácticamente imposibles sin las bibliotecas de Office.Interop ( http://cathalscorner.blogspot.com/2009/10/converting-docx-into-doc-pdf-html.html )

Here hay una alternativa ''prometedora'', pero YMMV.

Estoy intentando abrir el archivo .docx y convertirlo a PDF utilizando Interop.Word.Application. Funciona como una aplicación de consola, pero si uso la misma en mi aplicación web, no funciona. Intenté ver los permisos en la carpeta. Di el ''Servicio de red'' con control total, pero aún así obtengo una referencia de objeto no configurada en word.Documents.Open. ¿Podría por favor dejarme saber cuál podría ser el problema? Estoy atascado con este error. Por favor hagamelo saber. Agradezco cualquier sugerencia. Gracias.

Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); object oMissing = System.Reflection.Missing.Value; word.Visible = false; word.ScreenUpdating = false; string fileName = @"c:/OUTPUT/test.docx"); Document doc = word.Documents.Open(filename, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); doc.Activate();


Es muy probable que tenga una palabra DLL diferente en su servidor web, tal vez una más antigua. Le sugiero que haga referencia a una dll específica y la copie en el servidor web, de modo que pueda estar seguro de que está utilizando la misma palabra dll con la que probó el código y sabe que funciona. Puede haber algunos problemas al usar la interoperabilidad, sin embargo, la interoperabilidad de palabras es la única que puede estar seguro de que convertirá los archivos de palabras más correctamente.



Hice los siguientes pasos y funcionó bien:

  • Crear la carpeta de escritorio
  • Cambie el elemento DCOM para iniciar sesión con un usuario específico en lugar de un usuario de inicio / interactivo
  • Se modificó el servicio para que comenzara como el mismo usuario específico.

Intenta esto te puede ayudar.

  • Cree un nuevo directorio de "Escritorio" dentro de "C: / Windows / SysWOW64 / config / systemprofile /"

Me funciona después de un largo y largo día buscando la solución.

Parece ser un problema de perfil.


Para resolver esto tuve que hacer ambas cosas:

  • Crea los directorios:

    • C:/Windows/System32/config/systemprofile/AppData/Local/Microsoft /Windows/INetCac‌he
    • C:/Windows/System32/config/systemprofile/Desktop
  • Habilite la configuración de DCOM como dice @ gianni-b .

Si tiene dificultades para encontrar la entrada de DCOM debido a un idioma diferente, puede hacer esto:

  1. Menú Inicio> regedit
  2. Navegue a HKEY_LOCAL_MACHINE/SOFTWARE/Classes/AppID/{00020906-0000-0000-C000-000000000046}
  3. Haga clic derecho> Nuevo> Valor de cadena

    • Para Key, pon RunAs
    • Para valorar, poner Interactive User

Puede hacer lo mismo para Excel en AppID {00020812-0000-0000-C000-000000000046} .


Si todavía está buscando la respuesta, la he encontrado hace un momento para mi proyecto.

Abra la configuración de configuración de DCOM:

  1. Inicio -> dcomcnfg.exe
  2. Computadora
  3. Computadora local
  4. Config DCOM
  5. Buscar documentos de Microsoft Word 97-2003 Documents -> Propiedades

Identity pestaña, cambio de Launching User Interactive User