Exemple : Convertir des lignes Excel en fichiers XML
Les fichiers Excel peuvent comporter plusieurs feuilles de calcul dont la structure diffère, ce qui signifie que le nombre et l’ordre des colonnes peuvent varier. D'autre part, il existe également des fichiers Excel dans lesquels toutes les feuilles de calcul ont une structure identique et où seuls le nom et les données de la feuille de calcul diffèrent.
Avec MapForce, vous pouvez configurer un mappage pour extraire de manière flexible les données des feuilles de calcul Excel dans l’un ou l’autre des scénarios ci-dessus, à savoir :
1.Vous pouvez représenter chaque feuille de calcul Excel individuellement comme une structure distincte dans le mappage. Cette approche est utile lorsque chaque feuille de calcul Excel présente une structure différente. Vous disposez de la flexibilité nécessaire pour mapper des données provenant de n’importe quelle cellule de n’importe quelle feuille de calcul de votre fichier Excel source.
2.Vous pouvez traiter toutes les feuilles de calcul du fichier Excel comme s’il s’agissait d’une seule et même feuille de calcul. Cette approche n’est utile que si toutes les feuilles de calcul ont la même structure ; elle présente l’avantage de réduire le nombre de connexions à tracer sur le mappage. La structure de chaque feuille de calcul étant supposée identique, vous ne tracez les connexions à partir de chaque colonne qu’une seule fois, quelle que soit la feuille de calcul dans laquelle elle apparaît.
Pour configurer un composant Excel selon l’une des deux approches décrites ci-dessus :
1.Ajoutez le fichier Excel au mappage à l’aide de la commande de menu Insérer | Excel 2007+ fichier, voir également Ajouter des fichiers Excel 2007+ comme composants de mappage.
2.Cliquez sur le bouton
situé à côté de la première feuille de calcul. Le dialogue suivant s’affiche :

3.Procédez de l’une des manières suivantes :
a.Pour afficher la structure de chaque feuille de calcul séparément, assurez-vous que la case à cocher Afficher les feuilles de calcul par nom est cochée. Il s'agit de l'option par défaut.
b.Pour traiter toutes les feuilles de calcul comme un seul composant mappable, décochez la case Afficher les feuilles de calcul par nom.
Un fichier de conception de mappage de démonstration illustrant chacune des deux approches décrites ci-dessus est disponible à l’emplacement suivant : <Documents>\Altova\MapForce2027\MapForceExamples\DocExamples\ConvertExcelRows.mfd. Ce mappage illustre deux stratégies différentes de lecture des données à partir d’un fichier Excel. Comme ce mappage produit plusieurs sorties sans rapport entre elles, le bouton Aperçu
apparaît dans la barre de titre de chaque composant cible. N’oubliez pas de cliquer sur ce bouton avant de cliquer sur le volet Sortie, afin de prévisualiser le fichier de sortie correspondant.
Le fichier Excel source s’appelle Altova.xlsx et se compose de deux feuilles de calcul : « Admin » et « Development ». Notez que la structure de chaque feuille de calcul est identique ; seules les données contenues dans chacune d’elles diffèrent (c’est pourquoi plusieurs stratégies d’accès aux données sont possibles).

La partie supérieure du mappage illustre la lecture des données du fichier Excel en traitant chaque feuille de calcul comme une structure distincte. Si vous cliquez sur le bouton
situé à côté de l’élément Admin, vous remarquerez que la case à cocher Afficher les feuilles de calcul par nom est cochée. Cela a pour effet que les deux feuilles de calcul, « Admin » et « Development », apparaissent explicitement dans le composant source, en tant qu’enfants de Workbook.

ConvertExcelRows.mfd (partie 1)
Le mappage illustré ci-dessus convertit les données des deux feuilles de calcul Excel en fichiers XML. Un fichier XML distinct doit être généré pour chaque enregistrement de personne à partir de chaque ligne de chaque feuille de calcul source. Le nom du fichier doit indiquer le nom du service et comporter un identifiant numérique. Par exemple, le fichier Admin1.xml contiendra les détails de la première personne (ligne) de la feuille de calcul « Admin », et ainsi de suite. Cet objectif de mappage a été atteint comme suit :
1.La fonction concat génère le nom de fichier pour chaque fichier XML cible. Elle concatène (dans cet ordre) les éléments suivants : le nom de chaque service, le numéro de ligne Excel et la chaîne « .xml ».
2.La connexion entre le résultat de la fonction concat et l’élément cible File: <dynamic> a pour effet de générer un nouveau fichier au moment de l’exécution du mappage pour chaque élément de la séquence d’éléments entrants. Dans cet exemple, la séquence entrante contient toutes les lignes de la feuille de calcul Excel source ; par conséquent, un nouveau fichier XML sera généré pour chaque ligne Excel.
À titre d’information, pour configurer un composant cible afin qu’il génère des noms de fichiers de manière dynamique, cliquez sur le bouton Fichier/Chaîne, puis sélectionnez l’option Utiliser les noms de fichiers dynamiques fournis par les mappages. Pour plus d'informations, voir Traiter plusieurs fichiers d'entrée ou de sortie dynamiquement.
La deuxième partie du mappage ConvertExcelRows.mfd est illustrée ci-dessous. Cette partie du mappage permet d’obtenir exactement le même résultat que la première partie, mais de manière plus concise. Notez que les connexions du mappage sont considérablement réduites.

ConvertExcelRows.mfd (partie 2)
La logique de mappage est presque identique à celle décrite précédemment, à savoir :
1.Pour chaque ligne de chaque feuille de calcul source, un élément Person sera créé dans la cible.
2.La fonction concat génère le nom de chaque fichier cible.
3.Le composant cible a été configuré pour générer les noms de fichiers de manière dynamique.
La seule différence réside dans le fait que toutes les feuilles de calcul du fichier Excel source sont parcourues implicitement : il n’est pas nécessaire d’afficher séparément la structure de chaque feuille de calcul ni de tracer des connexions de mappage pour chacune d’entre elles. La raison en est que le composant Excel source a été configuré pour traiter toutes les feuilles de calcul comme une seule et même feuille : vous pouvez cliquer sur le bouton
situé à côté de l’élément Feuilles de travail et constater que la case à cocher Afficher les feuilles de calcul par nom n’est pas cochée.
En conclusion, dans cette rubrique, vous avez découvert les différences entre le mappage des données à partir de feuilles de calcul Excel individuelles et le traitement de toutes les feuilles de calcul comme une seule. Gardez simplement à l’esprit que la deuxième approche nécessite et implique que la structure de toutes les feuilles de calcul soit identique. Dans cet exemple, on part du principe que la première colonne de chaque feuille de calcul contient le prénom de la personne, que la deuxième colonne contient son nom de famille, et ainsi de suite.