112 votes

Existe-t-il une API Java permettant de créer des documents Word riches ?

Je vais travailler sur une nouvelle application dans laquelle je dois générer un document Word contenant des tableaux, des graphiques, une table des matières et du texte. Quelle est la bonne API à utiliser pour cela ? Êtes-vous sûr qu'elle prend en charge les graphiques, les tables des matières et les tableaux ? Quels sont les problèmes cachés liés à leur utilisation ?

Quelques clarifications :

  • Je ne peux pas produire un PDF, ils veulent un document Word.
  • Ils utilisent MS Word 2003 (ou 2007), pas OpenOffice.
  • L'application fonctionne sur un serveur d'applications *nix.

Ce serait bien si je pouvais commencer avec un modèle de document et simplement remplir certains espaces avec des tableaux, des graphiques, etc.

Edit : Plusieurs bonnes réponses ci-dessous, chacune avec ses propres défauts par rapport à ma situation actuelle. Difficile de choisir une "réponse finale" parmi elles. Je pense que je vais laisser la question ouverte, et espérer que de meilleures solutions seront créées.

Edit : Le projet OpenOffice UNO semble être le plus proche de ce que j'ai demandé. Bien que POI soit certainement plus grand public, il est trop immature pour ce que je veux.

27 votes

Je ne vois pas en quoi le fait de clore cette question 30 mois après sa dernière modification et plus de 3 ans après qu'elle ait été posée à l'origine va être très productif. Si je changeais le titre en "Comment créer des documents Word enrichis avec une API Java", cela réglerait-il le problème ?

1 votes

Au cas où quelqu'un aurait besoin d'un examen complet de l'api java disponible esupu.com/open-source-office-document-java-api-review

0 votes

Vous pouvez consulter docxtemplater, https://github.com/edi9999/docxtemplater/ qui est une bibliothèque que j'ai créée pour générer des docx à partir de modèles de docx

56voto

En 2007, mon projet a utilisé avec succès le logiciel OpenOffice.org. Objets de réseau universels (UNO) pour générer de manière programmatique des documents compatibles MS-Word (*.doc), ainsi que les documents PDF correspondants, à partir d'une application Web Java (un cadre Struts/JSP).

OpenOffice UNO vous permet également de créer des graphiques, des feuilles de calcul, des présentations, etc. compatibles avec MS-Office. Nous avons pu construire dynamiquement des documents Word sophistiqués, y compris des graphiques et des tableaux.

Nous avons simplifié le processus en utilisant des modèles de documents MS-Word comportant des signets dans lesquels le logiciel insère du contenu. Toutefois, vous pouvez créer des documents entièrement à partir de zéro. L'objectif était de faire en sorte que le logiciel génère des documents de rapport qui puissent être partagés et modifiés par les utilisateurs finaux avant d'être convertis en PDF pour la livraison finale et l'archivage.

Vous pouvez éventuellement produire des documents aux formats OpenOffice si vous souhaitez que les utilisateurs utilisent OpenOffice au lieu de MS-Office. Dans notre cas, les utilisateurs veulent utiliser les outils MS-Office.

UNO est inclus dans la suite OpenOffice. Nous avons simplement lié notre application Java aux bibliothèques liées à UNO dans la suite. Un site Kit de développement logiciel OpenOffice (SDK) est disponible et contient des exemples d'applications et le Guide du développeur UNO.

Je n'ai pas cherché à savoir si la dernière version d'OpenOffice UNO peut générer les formats de documents Open XML de MS-Office 2007.

Les éléments importants d'OpenOffice UNO sont :

  1. C'est un freeware
  2. Il prend en charge de nombreux langages (par exemple, Visual Basic, Java, C++, et autres).
  3. Il est indépendant de la plate-forme (Windows, Linux, Unix, etc.).

Voici quelques sites web utiles :

30voto

smink Points 39640

Je pense POI Apache peut faire le travail. Un problème possible, selon l'utilisation que vous visez, peut être causé par le fait que HWPF est encore en phase de développement précoce.

HWPF est l'ensemble des API permettant de lire et l'écriture de documents Microsoft Word 97(-XP) en utilisant (uniquement) Java.

0 votes

Connaissez-vous les possibilités des graphiques et des tableaux ? Et les tables des matières ? Quelqu'un a une expérience réelle de ces choses dans POI ?

1 votes

En regardant la documentation de POI, il semble que ce HWPF n'en soit qu'au début de son développement, permettant principalement de lire du texte à partir d'un .doc, et pas vraiment de créer dynamiquement des documents "complexes".

0 votes

Je ne crois pas qu'il gère les graphiques/tableaux plus complexes, etc.

9voto

Leonardo Points 221

Vous pourriez utiliser ceci : http://code.google.com/p/java2word

J'ai implémenté cette API appelée Java2Word. Avec quelques lignes de code, vous pouvez générer un document Microsoft Word.

Eg. :

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

Il existe quelques exemples d'utilisation. En fait, vous aurez besoin d'un fichier jar. Faites-moi savoir si vous avez besoin de plus d'informations sur la façon de le mettre en place.

*J'ai écrit ceci parce que nous avions une réelle nécessité dans un projet. Plus dans mon blog :

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

salutations Leonardo

Modifier : Projet en lien déplacé vers https://github.com/leonardoanalista/java2word

1 votes

L'avez-vous testé en utilisant MS Word ? J'ai réussi à créer des fichiers que OpenOffice et LibreOffice peuvent lire mais pas MSWord sous Windows. (J'ai signalé ce problème à code.google.com/p/java2word/issues/detail?id=16 )

2 votes

Je ne peux pas ouvrir les fichiers générés par java2word en utilisant OpenOffice ? Cela fonctionne bien avec Office 2010

0 votes

Est-il possible de créer des fichiers .docx ? Leonardo

4voto

romeok Points 304

Essayez Aspose.Words pour Java, il fonctionne sur tout système d'exploitation où Java est installé.

Il produira le document au format DOC, DOCX ou RTF si vous avez besoin d'un format de sortie MS Word. Tous sont également pris en charge.

Grâce à cette API, vous pouvez créer un document à partir de zéro, littéralement à partir de nœuds et définir leurs propriétés de formatage. Vous pouvez également utiliser un DocumentBuilder qui fournit des méthodes de niveau supérieur telles que la création d'une ligne de tableau, l'insertion d'un champ, etc. Ou vous pouvez copier/joindre/déplacer des portions entre des documents pré-créés existants, disons que vous voulez assembler un contrat, il suffit de saisir et copier des morceaux de plusieurs documents et Aspose.Words fusionnera les styles, le formatage des listes, etc. correctement dans le document résultant.

Vous pourrez insérer un champ TOC en utilisant Aspose.Words, mais à partir d'aujourd'hui, le champ TOC nécessitera une mise à jour du champ lorsque le document sera ouvert dans Microsoft Word. Cependant, nous allons mettre en place un support complet pour les champs TOC au début de l'année 2010. Par exemple, il créera une table des matières complète comme le fait MS Word.

Je fais partie de l'équipe Aspose.Words.

4voto

Joshua Born Points 160

Elle n'a été mentionnée qu'une seule fois et brièvement. J'aimerais donc mentionner la bibliothèque docx4j, car j'ai eu plus de succès avec docx4j qu'avec toute autre chose. La prise en charge des documents Word par Apache POI n'est pas très bonne. De plus, contrairement à Aspose.Words, docx4j est une bibliothèque open source.

Le seul inconvénient est qu'avec docx4j, vous devez créer des documents au format Office Open XML (docx) plutôt que des documents au format OLE2 (doc). Il s'agit du format par défaut de Word 2007, mais les utilisateurs de Word 2003 et des versions antérieures devront installer un pack de compatibilité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X