web-dev-qa-db-fra.com

comment créer un fichier odt par programme avec Java?

Comment créer un fichier odt (LibreOffice/OpenOffice Writer) avec Java par programme? Un exemple de "bonjour le monde" sera suffisant. J'ai consulté le site Web OpenOffice mais la documentation n'était pas claire.

23
baris

Jetez un coup d’œil à ODFDOM - l’API OpenDocument

ODFDOM est une bibliothèque gratuite OpenDocument Format (ODF). Son but est de Fournir un moyen simple et facile de créer, Accéder et manipuler des fichiers ODF, Sans nécessiter une connaissance détaillée De la spécification ODF. Il est Conçu pour fournir à la communauté De développeurs ODF une API de programmation facile à utiliser Portable, adaptée à tout langage orienté objet de .

L'implémentation de référence actuelle Est écrite en Java.

// Create a text document from a standard template (empty documents within the JAR)
OdfTextDocument odt = OdfTextDocument.newTextDocument();

// Append text to the end of the document. 
odt.addText("This is my very first ODF test");

// Save document
odt.save("MyFilename.odt");

plus tard

Au moment de la rédaction de cet article (2016-02), on nous dit que ces classes sont déconseillées ... très longtemps, et la documentation de l'API OdfTextDocument vous indique:

À partir de la version 0.8.8, remplacée par org.odftoolkit.simple.TextDocument dans Simple API.

Cela signifie que vous incluez toujours le même fichier .jar actif dans votre projet, simple-odf-0.8.1-incubating-jar-with-dependencies.jar, mais que vous souhaitez décompresser le fichier .jar suivant pour obtenir la documentation: simple-odf-0.8.1-incubating-javadoc.jar, plutôt que odfdom-Java-0.8.10-incubating-javadoc.jar.

Incidemment, le lien de documentation télécharge un tas de fichiers jar dans un fichier .Zip qui dit "0.6.1" ... mais la plupart des éléments à l'intérieur semblent ressembler davantage à 0.8.1. Je ne sais pas pourquoi on dit "à partir de 0.8.8" dans la documentation relative aux classes "obsolètes": à peu près tout est déjà marqué obsolète.

Le code simple équivalent à ce qui précède est alors:

odt_doc = org.odftoolkit.simple.TextDocument.newTextDocument()
para = odt_doc.getParagraphByIndex( 0, False )
para.appendTextContent( 'stuff and nonsense' )
odt_doc.save( 'mySpankingNewFile.odt' )

PS utilise Jython, mais Java devrait être évident.

13
Adnan

Je n'ai pas essayé, mais utiliser JOpenDocument peut être une option. (Il semble que ce soit une bibliothèque purement Java qui génère des fichiers OpenDocument.)

8
Jean Hominal

JODReports , qui permet de créer des rapports et des documents bureautiques au format ODT (à partir de modèles, composés à l’aide du processeur LibreOffice/OpenOffice.org Writer Word).

DocumentTemplateFactory templateFactory = new DocumentTemplateFactory();
DocumentTemplate template = templateFactory .getTemplate(new File("template.odt"));
Map data = new HashMap();
data.put("title", "Title of my doc");
data.put("picture", new RenderedImageSource(ImageIO.read(new File("/tmp/lena.png"))));
data.put("answer", "42");
//...
template.createDocument(data, new FileOutputStream("output.odt"));

Les documents peuvent éventuellement être convertis au format PDF, Word, RTF, etc. avec JODConverter .

Modifier/mettre à jour

Ici vous pouvez trouver un exemple de projet utilisant JODReports (avec des cas de formatage non triviaux).

3
Marc de Verdelhan

J'ai écrit un DSL jruby pour manipuler par programme des documents ODF.

https://github.com/noah/ocelot

Ce n'est pas strictement Java, mais il se veut beaucoup plus simple à utiliser que l'ODFDOM.

Créer un document Hello World est aussi simple que:

% cat examples/hello.rb
include OCELOT

Text::create "hello" do
  paragraph "Hello, world!"
end

Il existe quelques exemples supplémentaires (y compris un exemple de tableur ou deux) ici .

2
g33kz0r

Je cherchais moi-même une réponse à cette question. Je travaille sur un projet de génération de documents avec différents formats et j’avais un besoin urgent de bibliothèque pour générer des fichiers ODT. Je peux enfin dire que ODFToolkit avec la dernière version de la bibliothèque simple-odf est le répondre pour générer des documents texte. Vous pouvez trouver la page officielle ici: Apache ODF Toolkit (Incubating) - API simple Voici une page pour télécharger la version 0.8.1 ( la dernière version de Simple API) comme je n'ai pas trouvé la dernière version sur la page officielle, seule la version 0.6.1

Et ici vous pouvez trouver Apache ODF Toolkit (incubating) cookbook

1
aibrahim

Vous pouvez essayer d'utiliserJasperReportspour générer vos rapports, puis exportez-le au format ODS . La bonne chose à propos de cette approche est 

  1. vous obtenez un large support pour tous les formats de sortie JasperReports, par exemple. PDF, XLS, HTML, etc.
  2. Jasper Studio facilite la conception de vos rapports
0
Hendy Irawan