anchor.diff:      ...
   ----
   
  -Maintenant, il ne nous reste plus qu'à lire le fichier CSV et à indiquer à Jackson les informations de mapping pour récupérer la liste complète des médicaments :
  +Il ne nous reste plus qu'à lire le fichier CSV et à indiquer à Jackson les informations de mapping pour récupérer la liste complète des médicaments :
   
   [source,java]
   ----
  
positive.code: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
  ----
  
  Le problème vient de notre objet *Medicament*. Ce dernier fournit 2 propriétés (voiesAdministration et titulaires) qui ne sont pas des types simples et qui ne sont gérés par JXLS.
  
  Pour ce genre de cas, il possible de fournir des fonctions *custom* qui vont transformer nos propriétés au bon format. Pour ce faire, nous allons tout d'abord définir une classe transformant notre liste d'objets en chaîne :
  
  
negative.code: Template Excel
  ==============
  
  Maintenant que nous avons notre jeu de données, nous pouvons maintenant définir notre template Excel. Nous partons simplement d'un fichier Excel "classique" (à quelques détails prês) :
  
  image::jxls/template1.png[]
  
  En effet, vous pouvez voir que les cellules censées contenir les données de chaque médicament utilise la syntaxe suivante *${variable.propriete}*. Cette syntaxe est connue de JXLS bien sûr et sera utilisée ultérieurement pour remplir le document avec les données finales (vous trouverez le template https://github.com/Ellixo/JXLS-demo/blob/master/src/main/resources/BDM.xls?raw=true[ici]).
  
  Afin de finaliser notre template, nous allons l'enrichir en utilisant un des mécanismes fournis par JXLS pour simplifier la gestion des données : le système de markup. Pour ce faire, Nous allons insérer des metadatas JXLS au sein du template via les commentaires natifs Excel (remarque : les markups JXLS utilise la syntaxe Apache JEXL).
  
  Pour notre besoin, nous n'aurons besoin que de définir 2 markups :
  
  image::jxls/template2.png[]
  
  - le premier (*jx:area(lastCell="L2")*) défini la zone d'action de JXLS au sein du template (ici de la cellule A1 à la cellule L2). C'est une étape indispensable afin de permettre à JXLS de manipuler le fichier ; en effet, l'application de Command JXLS (ie. transformation et écriture au sein du fichier) ne peut se faire qu'au sein d'une Area. Il est bien sûr possible de définir plusieurs Areas ou même d'imbriquer des Areas au sein d'un même fichier mais dans notre cas, ça ne sera pas nécessaire.
  - le deuxième et dernier commentaire (*jx:each(items="medicaments" var="medicament" lastCell="L2")*) indique à JXLS que nous désirons itérer sur la variable *medicaments* (ie. liste des médicaments), chaque élément de cette liste est associé à la variable *medicament* et le mapping de cette dernière avec le template s'applique jusqu'à la cellule L2.
  
  Voilà, notre template est prêt.
  
  