comment créer un fichier odt de manière programmatique avec java?

Comment puis-je créer un fichier odt (LibreOffice/OpenOffice Writer) avec Java programmatically? Un exemple "hello world" suffira. J'ai regardé le site D'OpenOffice, mais la documentation n'était pas claire.

22
demandé sur sampablokuper 2011-01-25 11:41:04

6 réponses

regardez ODFDOM - L'API OpenDocument

ODFDOM is a free OpenDocument Format (ODF) bibliothèque. Son but est de fournir une façon commune facile de créer, accéder et manipuler des fichiers ODF, sans exiger des connaissances détaillées de la spécification ODF. Il est conçu pour fournir le développeur ODF communauté avec un travail de lumière facile programmer L'API portable pour n'importe quelle langage orienté objet.

La référence actuelle application est écrit 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");

tard

de cette écriture (2016-02), on nous dit que ces classes sont obsolètes... un grand moment, et le OdfTextDocument la documentation de L'API vous dit:

à partir de la version 0.8.8, remplacé par org.odftoolkit.simple.TextDocument in Simple API.

cela signifie que vous incluez toujours le même actif .fichier jar dans votre projet, simple-odf-0.8.1-incubating-jar-with-dependencies.jar, mais vous voulez être le déballage de la suivante .jar pour obtenir de la documentation: simple-odf-0.8.1-incubating-javadoc.jar plutôt que odfdom-java-0.8.10-incubating-javadoc.jar.

soit dit en passant, le lien de documentation télécharge un tas de fichiers jar à l'intérieur d'un A.zip qui dit "0.6.1"... mais la plupart des choses à l'intérieur semble être plus comme 0.8.1. Je n'ai aucune idée de la raison pour laquelle ils disent "à partir de 0.8.8" dans la documentation pour les classes "dépréciées": à peu près tout est déjà marqué déprécié.

le code simple équivalent au code ci-dessus 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 le Java devrait être évident.

13
répondu Adnan 2016-02-15 22:12:20

je n'ai pas essayé, mais à l'aide de JOpenDocument peut être une option. (Il semble être un pur bibliothèque Java pour générer les fichiers OpenDocument.)

8
répondu Jean Hominal 2011-01-25 08:46:19

un complément de solutions précédemment données serait JODReports, qui permet de créer des documents et des rapports de bureau au format ODT (à partir de gabarits, composés en utilisant le LibreOffice/OpenOffice.org Writer word processor).

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"));

optionnellement les documents peuvent alors être convertis en PDF, Word, RTF,etc. JODConverter.

Modifier/mettre à jour

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

3
répondu Marc de Verdelhan 2012-12-20 10:38:10

j'ai écrit un JRuby DSL pour la manipulation programmatique de documents ODF.

https://github.com/noah/ocelot

ce n'est pas strictement java, mais il vise à être beaucoup plus simple à utiliser que L'ODFDOM.

créer un document hello world est aussi facile que:

% cat examples/hello.rb
include OCELOT

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

Il y a un peu plus d'exemples (y compris une feuille de calcul exemple ou deux) ici.

2
répondu g33kz0r 2013-06-21 18:09:22

j'ai cherché moi-même une réponse à cette question. Je travaille sur un projet pour générer des documents avec différents formats et j'avais un mauvais besoin 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 la réponse pour générer des documents textuels. Vous pouvez trouver la page officielle ici : Apache ODF Toolkit (Incubating) - Simple API une page pour télécharger la version 0.8.1 (la dernière version de simple API)

Et vous trouverez ici Apache ODF Toolkit (incubation) livre de cuisine

1
répondu aibrahim 2015-09-15 10:04:11

Vous pouvez essayer d'utiliser JasperReports pour générer vos rapports, puis sur exporter vers ODS. La bonne chose à propos de cette approche est

  1. vous bénéficiez d'un large soutien pour tous les formats de sortie JasperReports, par exemple PDF, XLS, HTML, etc.
  2. Jasper Studio rend facile de concevoir vos rapports
0
répondu Hendy Irawan 2013-10-01 08:36:57