[Open XML] Manipuler des documents Open XML avec OpenXML4J sur Android c’est possible !
En 2006, je débutais un projet open source autour d’Open XML, le projet OpenXML4J, pour exploiter un format déjà plein de promesses (tenues aujourd’hui). 3 ans plus tard, le projet OpenXML4J est intégré au projet POI, projet open source qui a déjà soufflé bon nombre de bougies et reconnu, qui permet aux développeurs Java de manipuler des documents Office, et notamment Excel, directement en Java.
Avec le succès et la notoriété toute jeune de la plateforme Android, je me suis bien évidemment posé la question : est-ce que les développeurs Android peuvent utiliser OpenXML4J pour développer des applications ???
Voici la réponse :
Et la récupération des informations depuis une applications Android :
Voici le code utilisé pour récupérer les propriétés d’un document Open XML avec OpenXML4J :
try {
Package p = Package.open(inStream);
StringBuffer sb = new StringBuffer();
PackageProperties props = p.getPackageProperties();
sb.append("Title: " + props.getTitleProperty().getValue());
sb.append("\nCreator: " + props.getCreatorProperty().getValue());
sb
.append("\nCreation date: "
+ props.getCreatedProperty().getValue());
sb.append("\nStatus: " + props.getContentStatusProperty().getValue());
p.revert();
} catch (Exception e) {
return "Une erreur s'est produite :(";
}
Attention : la version d’OpenXML4J utilisée dans le cadre de ce projet Android est une version modifiée !!!!
En effet, si la librairie OpenXML4J est tout à fait compatible avec Android, sa dépendance envers DOM4J et Log4J l’handicape. Pour rendre la librairie OpenXML4J compatible avec la plateforme Android j’ai dû :
- Supprimer la dépendance vers Log4J en modifiant ou supprimant tous les appels à cette librairie,
- Modifier les méthodes de parsing des différents éléments OPC du package du document Open XML pour utiliser les APIs DOM standard au lieu de DOM4J (il reste encore les méthodes d’enregistrement à compléter, chose qui devrait être faites prochainement),
- Alléger quelques méthodes de vérification de la conformité du package à la spécification du standard pour amélioration la performance.
La remarque sur les performances est ici importante car nous parlons d’un environnement mobile et donc d‘une puissance de calcul limitée. A l'origine, OpenXML4J n’a été pensé et conçu pour s’exécuter sur ce type de plateforme. OpenXML4J en environnement mobile possède donc une grande marge d’amélioration quant aux performances …
Pour le moment seuls les documents d’Office 2007 semblent fonctionner avec OpenXML4J, j’espère pouvoir arranger la compatibilité avec les documents Office 2010 avant la sortie de la suite bureautique.
Les sources modifiées ainsi que celles de l’application de démonstration sont à disposition sur le SVN du projet OpenXML4J hébergé sur sourceforge.net dans la branche Android du projet (https://openxml4j.svn.sourceforge.net/svnroot/openxml4j/branch/android).
Plus d’info sur le site officiel : www.openxml4j.org et http://sourceforge.net/projects/openxml4j/
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :