92 votos

¿Qué es una buena API de Java para crear documentos de Word?

Tengo una nueva aplicación en la que tengo que generar un documento de Word que contiene tablas, gráficos, una tabla de contenidos y texto. ¿Qué es una buena API para esto? ¿Qué tan seguro estás de que soporta gráficos, ToCs y tablas? ¿Qué hay algunos "gotcha" ocultos al usarlos?

Algunas aclaraciones:

  • No puedo sacar un PDF, quieren un Word doc.
  • Están usando MS Word 2003 (o 2007), no OpenOffice
  • La aplicación se ejecuta en el *nix app-server

Estaría bien si pudiera empezar con un documento de plantilla y rellenar algunos espacios con tablas, gráficos, etc.

Editar: Varias buenas respuestas a continuación, cada una con sus propios fallos en cuanto a mi situación actual. Es difícil elegir una "respuesta final" de ellas. Creo que la dejaré abierta, y espero que se creen mejores soluciones.

Editar: El proyecto OpenOffice UNO parece estar más cerca de lo que pedí. Mientras que POI es ciertamente más convencional, es demasiado inmaduro para lo que quiero.

27voto

smink Puntos 39640

Creo que Apache POI puede hacer el trabajo. Un posible problema, dependiendo del uso al que apunte, puede ser causado por el hecho de que el HWPF está aún en desarrollo temprano.

HWPF es el conjunto de API para la lectura y escribiendo Microsoft Word 97(-XP) documentos usando (sólo) Java.

8voto

Leonardo Puntos 221

Podrías usar esto: http://code.google.com/p/java2word

He implementado esta API llamada Java2Word. Con unas pocas líneas de código, puedes generar un documento de Microsoft Word.

Por ejemplo..:

IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")

Hay algunos ejemplos de cómo utilizarlo. Básicamente necesitarás un archivo de tarro. Hazme saber si necesitas más información sobre cómo configurarlo.

*Escribí esto porque teníamos una necesidad real en un proyecto. Más en mi blog:

http ://leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

Saludos Leonardo

3voto

romeok Puntos 304

Prueba Aspose.Words para Java, funciona en cualquier sistema operativo donde esté instalado Java.

Si necesita un formato de salida de MS Word, lo enviará a DOC, DOCX o RTF. Todos están soportados igualmente bien.

Usando esta API puedes crear un documento desde cero, literalmente desde los nodos y establecer sus propiedades de formato. También puede utilizar un DocumentBuilder que proporciona métodos de mayor nivel como crear una fila de tabla, insertar un campo, etc. O puede copiar/unir/mover partes entre documentos pre-creados existentes, digamos que quiere ensamblar un contrato, simplemente tome y copie partes de varios documentos y Aspose.Words fusionará los estilos, el formato de la lista, etc. correctamente en el documento resultante.

Podrá insertar un campo TOC usando Aspose.Words, pero a partir de hoy, el campo TOC requerirá una actualización del campo cuando se abra el documento en Microsoft Word. Sin embargo, vamos a lanzar el soporte completo para los campos TOC a principios de 2010. Por ejemplo, construirá la TOC completa como lo hace MS Word.

Estoy en el equipo de Aspose. Palabras.

3voto

Joshua Born Puntos 160

Sólo se mencionó brevemente una vez, así que me gustaría llamar a la biblioteca de docx4j, ya que he tenido más éxito con docx4j que con cualquier otra cosa. El soporte de Apache POI para documentos de Word no es muy bueno. Además, a diferencia de Aspose.Words, docx4j es una biblioteca de código abierto.

El único inconveniente es que con docx4j tienes que crear documentos en formato Office Open XML (docx) en lugar de documentos en formato OLE2 (doc). Este es el formato predeterminado para Word 2007, pero los usuarios de Word 2003 y anteriores tendrán que instalar un paquete de compatibilidad.

2voto

Gulzar Nazim Puntos 35342

Puede utilizar un puente Java COM como JACOB . Si es desde el lado del cliente, otra opción sería utilizar Javascript.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X