Pregunta

He automatizado la creación de documentos de Word a partir de plantillas utilizando la " Biblioteca de objetos de Microsoft Word 12.0 " En mi proyecto, pero es inaceptablemente lento. Estoy buscando alternativas: necesito crear un documento a partir de una plantilla, ejecutar algunas macros e insertar texto y tablas en varios rangos de marcadores (algunas opciones de formato de texto también serían buenas). Solo necesito que el documento final sea compatible con Word2007 , pero preferiría una solución fácilmente disponible desde .NET (también se aprecian otras recomendaciones) ...

Por favor avise.

¿Fue útil?

Solución

Eche un vistazo a Office OpenXML SDK . Le permite crear documentos de Word 2007 (.docx) programáticamente sin las aplicaciones de Office.

Para usarlo, deberá estar familiarizado con el formato de archivo OpenXML. Un buen punto de partida que también proporciona ejemplos son los blogs de Brian Jones y Erika Ehrli .

Este ejemplo en CodeProject también podría ser un buen comienzo: Creación de un documento de Word 2007 con el SDK de formato XML abierto .

También te recomiendo que eches un vistazo a DocumentReflector, una herramienta incluida en el SDK, que crea el código para producir un determinado documento de Word basado en un documento existente.

Otros consejos

Opciones, que utilicé hasta ahora:

  1. Tuyo - automatización COM: el rendimiento no fue el mayor problema aquí para mí, solo todos los detalles feos de la automatización COM como procesos muertos, archivos bloqueados, ...; para algunas tareas donde existe una API y siempre que solo una persona use la aplicación, Sigue siendo una opción. Requiere instalación de Word.
  2. Importar como HTML y guardar como Word: funciona rápido y mejor como se esperaba, siempre y cuando su formato de palabra sea simple y coincida con la estructura de marcado HTML bastante bien (por ejemplo, encabezados, listas de elementos). Para simplificar el manejo, las plantillas tienen que ser HTML, entonces, tan a menudo un truco rápido para un caso de uso limitado. Requiere instalación de Word.
  3. Concatenar y procesar plantillas guardadas como WordML: le ahorra el dolor de COM automatización, pero como WordML es solo un formato binario enmascarado como XML, a menudo es un problema; por lo tanto, algunas tareas son más complicadas que usar una API de Word. Sin embargo lo prefiero sobre 1. No requiere una instalación de Word.
  4. Como en la respuesta anterior, OpenXML SDK: comenzar a usar esto, parece ser una buena compromiso de 1 y 3: trabaje en el nivel XML o en el nivel API, lo que mejor se adapte a un cierta característica No requiere una instalación de Word.
  

otras recomendaciones son apreciadas también

Los equivalentes de Java para el SDK de OpenXML son docx4j (mi proyecto) y POI.

Utilizando docx4j, puedes inyectar macros en un docx existente, o trabajar desde un dotm (como sugiere divo).

Officewriter es otra opción.

  

La API de OfficeWriter es una biblioteca .NET que le permite generar,   Manipule y lea los documentos de Excel y Word desde su propia cuenta.   aplicaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top