Actualités

[09/03/2010] PLOSS Rhône-Alpes

Smile a rejoint l’association des professionnels de l’industrie du logiciel libre de la région Rhône-Alpes, PLOSS Rhône Alpes, qui a vu le jour en mars 2010.

[03/03/2010] Partenariat platinum eZ

Smile est devenu le premier partenaire eZ Publish dans le monde au rang de partenaire « Platinum ». C'est le fruit de plus de 6 ans d'investissement des équipes de Smile, sur plus de 100 projets menés à bien, pour les clients les plus exigeants.

[24/02/2010] Site Mobile Smile

Plus qu’un site web accessible pour les téléphones mobiles, le site mobile de Smile est adapté à ce nouveau canal grâce à la création d’un design et d’une architecture propre.

Toutes les actualités
       
Guillemet ouvrant L'actualité des solutions
et des technologies du web Guillemet fermant

Apache POI, manipuler des fichiers Microsoft Office (Excel, Word, etc.)

La version 3.5 de l'API Apache POI gagne encore en maturité, et s'ouvre à Office 2007; un outil idéal pour relier applications et bureautique.

Qu'on le veuille ou non, la bureautique Microsoft tient encore une place importante dans la manipulation de l'information, et plutôt que de laisser cohabiter deux mondes disjoints, celui des DSI et systèmes d'information d'un côté, celui des utilisateurs et de la bureautique de l'autre, il n'est pas impossible de les marier, de construire des applications qui génèrent ou modifient des fichiers Excel, voire des documents Word.


Il existe pour cela une interface de programmation (API) dénommée Apache POI qui permet de manipuler des fichiers Microsoft Office. Il s’agit d’un projet de l’Apache Software Fondation.

Cette API en Java propose de nombreuses méthodes pour lire et écrire dans des fichiers Word, Excel, PowerPoint, etc. La nouvelle version, la 3.5 datant de fin septembre 2009, supporte les fichiers de la suite Office 2007 (docx, xlsx par exemple). Elle offre une vraie maturité et, est véritablement performante. Elle est particulièrement reconnue pour les traitements sur les fichiers Excel : création de fichier, ajout de feuille, ajout de valeurs dans telle ou telle case, définition de format, mise en forme, fusion de cellules, parcours de cellules, instanciation de formules, etc.

Le module POI-HSSF (qui gère les fichiers Excel) offre donc une variété de possibilités qui trouvent leur utilité au quotidien dans nos réalisations. Le site d’Apache POI fournit de nombreuses informations dont des exemples concrets de mise en œuvre : http://poi.apache.org/spreadsheet/examples.html.



Pour les fichiers Word, les bibliothèques ne vont pas très loin. Elles offrent de bonnes capacités en lecture, mais des méthodes limitées en écriture.

Quelles sont les alternatives à POI pour générer ou modifier des documents bureautiques côté serveur ?

Une première approche consiste à utiliser les fonctions de fusion/publipostage des outils, que ce soit OpenOffice ou bien MS-Word. OpenOffice peut être utilisé pour générer du format Word si besoin, ou bien on peut utiliser directement Word, si l'on est sur plateforme Windows, mais l'insertion dans une plateforme web est délicate : ce sont des solutions peu performantes, peu stables, et ne supportant pas les accès concurrents. On ne peut l'envisager donc que pour de très faibles charges, et avec des modèles de documents parfaitement maîtrisés.

Une approche plus robuste consiste à utiliser un mécanisme de gabarits pour élaborer ou modifier un document. Il peut s'agit des gabarits d'un outil de gestion de contenus, ou bien des gabarits d'un framework de développement. A partir du moment où le document est un fichier texte au format documenté et intelligible, il suffit de disposer des marqueurs aux points d'insertion du contenu, et n'importe quel gestionnaire de gabarits saura injecter les contenus aux bons emplacements, voire même répéter une portion, ou gérer des clauses conditionnelles. ODF de OpenOffice, ou bien DOCX de Word 2007, ou encore l'ancien RTF, sont des formats utilisables en templating.


Grégory Becue

Commentaires

       
Olivier Ziller
bonjour,
auriez-vous des pointeurs sur ces possibilités de fusion d'OpenOffice à partir de java?
merci
Lundi 30 Novembre 2009 @ 11:10
       

       
François-Xavier Bonnet
Bonjour,

En Java on manipule les documents Office via l'API UNO :
http://api.openoffice.org/docs/common/ref/com/sun/star/module-ix.html

Un exemple de création de document à partir d'un template :
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Text/Example:_Fields_in_a_Template
Dans cet exemple on utilise un document existant avec des champs qui sont remplacés par les valeurs fournies par le programme.

On peut également utiliser la fonctionnalité MailMerge d'OpenOffice qui est assez semblable aux fusions/publipostages de Microsoft Word. Voici l'objet Java qui permet d'utiliser cette fonctionnalité :
http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html
Il faut dans ce cas commencer par générer un fichier csv contenant les données à fusionner.

Jeudi 07 Janvier 2010 @ 11:20
       

       
Delalande Romain - http://www.woozweb.com
Bonjour M.Ziller, je vous conseille de jeter un oeil aux librairies JodReports / JodConverter, qui sont celles utilisées au sein d'Alfresco pour effectuer de la fusion/du templating sur des gabarits OpenOffice.

Cordialement,
Dimanche 24 Janvier 2010 @ 21:20
       
Ecrire un nouveau commentaire