Pregunta

Me gustaría crear un documento de Word utilizando una plantilla, reemplazar algunas variables (campos) y guardarlo como un nuevo documento de Word.

Estaba pensando usando Apache POI, http://poi.apache.org/ es la mejor ¿para este propósito? puede compartir su impresión de él?

¿Fue útil?

Solución

He trabajado con PDI antes y sin duda es capaz de generar documentos de Word. Pero el diablo está en los detalles.

Palabra tiene miles de funciones: Se puede poner listas numeradas comenzando en la posición # 13 con guiones negativos en dos células unidas de una tabla incluida en otra tabla que es en sí mismo parte de una lista de viñetas ... se entiende la idea. Cuando la documentación PDI dice que son un trabajo en progreso, que refleja lo que probablemente será un estado eterno de tratar de ponerse al día con el (para nosotros indocumentado,) especificación de la Palabra.

Los documentos con un conjunto razonable "normal" de las características utilizadas son bien apoyado por PDI, cuyas interfaces y métodos son razonables y consistentes, pero a veces requiere un poco de trabajo. Pero, como dice Pascal, los documentos con un conjunto no demasiado exorbitante de características también son apoyados por RTF. Casi no tengo experiencia "hacer" RTF pero es probablemente un poco más sencillo que trabajar con PDI.

Si está trabajando en un entorno o para un cliente que insiste en que sus documentos sean producidos .DOC en lugar de .RTF, entonces POI es prácticamente la única opción, a menos que se puede introducir un paso en el que se utiliza un poco de automatización de oficina RTF a convertir en DOC.

Actualización:. He tenido un par más ideas en el ínterin

El uso de puntos de interés o la creación de documentos RTF es algo que se podría hacer en prácticamente cualquier plataforma. En mi trabajo, todos los servidores que realizan el procesamiento como esto ocurre ejecutar Linux, por ejemplo.

Sin embargo, en el caso probable de que sus programas se ejecutarán en Windows, no hay otra alternativa: Jacob http://www.land-of-kain.de/docs/jacob/

Jacob es una interfaz COM para Java; que en esencia lo que permite a los programas de Windows "control remoto", como Word y Excel. El documento he vinculado anteriormente no es propio sitio de Jacob, pero a una sola página con recetas "plantilla" para el uso de Jacob. El proyecto en sí es en SourceForge: http://sourceforge.net/projects/jacob-project/ Pero la gente dice, y con razón, que la documentación es un poco escaso.

Jacob tiene la ventaja sobre todas las demás soluciones que usted está tratando con la palabra "real" y por lo tanto todos capacidades de la Palabra están disponibles para usted. Esto sería una alternativa si hay aspectos de detalle del documento que simplemente no se pueden manejar con POI o mediante el formato RTF.

Otros consejos

Esto es obviamente demasiado tarde, pero desde 2013 hay una mucho mejor, la solución más flexible para la creación de documentos de textos.

http://www.docx4java.org/trac/docx4j

He tenido mucha más suerte con docx4j que he hecho con la PDI.

Si se utiliza una plantilla, y no quiere crear el documento de Word a partir de cero, por lo que sé, PDI es una solución bastante buena. Se abre la plantilla y seleccionar las zonas que desee reemplazar.

Dicen PDI aún es Developpement, pero yo he estado usando en Environnement producción y funciona bastante bien en este momento.

No estoy seguro de la situación exacta de los documentos de Word apoyar los puntos de interés, pero, según el sitio web de puntos de interés, el trabajo está todavía en curso (no se puede decir lo que significa esto exactamente). Por lo tanto, en este momento, yo no utilizar PDI, sino más bien tratar de generar un documento RTF. Para esto, se podía:

  • RTFTemplate que es un RTF RTF a motor que puede generar documento RTF como el resultado de la fusión de un modelo RTF y datos.
  • iText que es primariamente un generador de PDF, pero también puede generar RTF .
  • Construir su propia solución personalizada (pero yo no lo haría).

Me gustaría ir a iText.

Sé que esta pregunta es un poco viejo, pero creo que muchas personas todavía encuentran esto con los motores de búsqueda, por lo que he puesto otra posibilidad de hacer lo que quiera aquí:

Si el único objetivo es tener una plantilla de Word y sustituir algunos valores en ella, usted podría considerar el ahorro de una plantilla de Word como única xml (no DOCX) y luego procesarla con sencillo Java y sin ningún tipo de marco. Si quieres hacer algo más (por ejemplo, crear listas o tablas) también podría considerar la comprensión del formato XML y escribir sus propios ayudantes antes de cargar un marco como PDI.

Este es un ejemplo de cómo hacerlo: http://dev-notes.com/code.php?q=10

Esta es la versión rápida, si quieres una versión agradable, se podría tratar de usar un procesador XML.

PD: los usuarios podrían notar que la extensión del archivo no es doc pero xml y que es posible que la culpa de eso, pero está bien ... sólo cambiarle el nombre a doc, palabra reconocerá el formato y todo el mundo es feliz de nuevo;)

Se deberán tener en cuenta los componentes Aspose.Words. Ellos han comenzado recientemente a ofrecer una versión de Java del componente.

Ver el siguiente enlace: Aspose. palabra para Java

Esto es compatible con la automatización de textos, la creación y las características avanzadas tales como correo de la fusión sin la necesidad de una instancia de Microsoft Word en la máquina. Los beneficios reales son que son capaces de trabajar en el contexto de un documento real palabra y no tener que comprometer mediante la creación de RTF, etc.

No

La versión de Java está actualmente como con todas las funciones que la versión .Net pero la funcionalidad principal núcleo está ahí y que están empujando muy duro para tener una versión equivalente característica pronto.

Además, si usted compra la versión de Java se obtiene un año libre de actualizaciones / soporte como se crean los nuevos lanzamientos.

Si está trabajando con documentos docx, docx4j es una opción. Como punto de interés, su fuente abierta.

He creado y utilizar esto: http://code.google.com/p/java2word

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