Altova MapForce 2024 Enterprise Edition

Example: Convert Excel Rows to XML Files

Accueil Préc Haut Suivant

Les fichiers Excel peuvent consister en plusieurs feuilles de calcul qui possèdent tous une structure différente, ce qui signifie que le nombre et l'ordre des colonnes peuvent être différents. D'un autre côté, il existe aussi des fichiers Excel dans lequel toutes les feuilles de calcul ont une structure identique et leur le nom et les données de la feuille de calcul sont différentes.

 

Avec MapForce, vous pouvez configurer un mappage pour extraire de manière flexible des données depuis des feuilles de calcul Excel dans un des scénarios ci-dessus, concrètement :

 

1.Vous pouvez montrer chaque feuille de calcul Excel individuelle en tant que structure distincte du mappage. Cette technique est utile lorsque chaque feuille de calcul Excel a une structure différente. Vous avez la flexibilité de mapper des données provenant de n'importe quelle cellule de n'importe quelle feuille de calcul dans votre fichier Excel de source.

2.Vous pouvez traiter toutes les feuilles de calcul dans le fichier comme s'ils étaient une seule feuille de calcul. Cette technique est utile uniquement si toutes les feuilles de calcul ont la même structure ; l'avantage est que vous devez tracer moins de connexions dans le mappage. Étant donné que la structure de chaque feuille de calcul est censée être la même, vous tracez une seule fois des connexions depuis chaque colonne, quel que soit la feuille de calcul où elles apparaissent.

 

Pour configurer un composant Excel pour l'une des deux techniques décrites ci-dessus :

 

1.Ajouter le fichier Excel au mappage en utilisant la commande de menu Insérer | Excel  2007+ Fichier, voir aussi Ajouter Excel 2007+ Fichiers en tant que composants de mappage.

2.Cliquer sur la touche AddRemove_Selections adjacente à la première feuille de calcul. Le dialogue suivant apparaît :

mf_excel_worksheet_by_name

3.Suivre une des étapes 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 leur nom est sélectionnée. Il s'agit de l'option par défaut.

b.Pour traiter toutes les feuilles de calcul en tant qu'un seul composant de mappable, décocher la case Afficher les feuilles de calcul par leur nom.

 

Un fichier de design de mappage de démonstration qui illustre chacune des deux techniques décrite ci-dessus est disponible sous le chemin suivant : <Documents>\Altova\MapForce2024\MapForceExamples\Tutorial\ConvertExcelRows.mfd. Ce mappage illustre deux stratégies différentes de la lecture des données depuis un fichier Excel. Puisque ce mappage produit plusieurs sorties non-liées, la touche Aperçu ic-preview-inact apparaît dans la barre de titre de chaque composant cible. Ne pas oublier de cliquer sur cette touche avant de cliquer sur l'onglet Sortie, afin de consulter le fichier de sortie respectif.

 

Le fichier Excel de source est appelé Altova.xlsx et il consiste en deux feuilles de calcul : "Admin" et "Development". Veuillez noter que la structure de chaque feuille de calcul est identique, seules les données dans chaque feuille de calcul diffère (ce qui explique pourquoi il existe plus qu'une stratégie d'accès aux données).

mf_excel_convert_example_01

La partie supérieure du mappage illustre la lecture des données provenant du fichier Excel en traitant chaque feuille de style en tant que structure séparée. Si vous cliquez sur la touche AddRemove_Selections située à côté de l'item Admin, vous constaterez que la case à cocher Afficher les feuilles de calcul par leur nom a été sélectionnée. La conséquence est que les deux feuilles de calcul, "Admin" et "Development", apparaissent explicitement dans le composant de source, en tant qu'enfants de Classeur.

mf_excel_convert_example_02

ConvertExcelRows.mfd (part 1)

Le mapping ci-dessus convertit des données provenant des deux feuilles de calcul Excel vers des fichiers XML. Un fichier XML séparé doit être généré pour chaque enregistrement de personne depuis chaque ligne dans chaque feuille de calcul de source. Le nom de fichier doit identifier le nom de département et avoir une ID numérique. Par exemple, le fichier Admin1.xml stockera les détails de la première personne (ligne) dans la feuille de calcul "Admin", etc. Cet objectif de mappage a été accompli comme suit :

 

1.La fonction concat produit le nom de fichier pour chaque XML cible. Elle rejoint (dans cet ordre) les éléments suivants : le nom de chaque département, le nombre de ligne Excel, et le string ".xml".

2.La connexion provenant du résultat de la fonction concat dans l'item de cible File: <dynamic> a l'effet qu'un nouveau fichier est généré au moment du runtime de mappage pour chaque item dans la séquence arrivante des items. Dans cet exemple, la séquence arrivante contient toutes les lignes de la feuille de calcul Excel source ; c'est pourquoi un nouveau fichier XML sera généré pour chaque ligne Excel.

 

Veuillez aussi noter que pour configurer un composant cible pour générer des noms de fichier dynamiquement, cliquer sur la touche, Fichier/String, et choisir l'option Utiliser noms de fichier dynamiques fournis par le mappage. Pour plus d'informations, voir Traiter plusieurs fichiers d'entrée ou de sortie dynamiquement.

 

Ci-dessous, vous trouverez la seconde partie du mappage ConvertExcelRows.mfd. Cette partie du mappage obtient exactement le même résultat que la partie 1, mais de manière plus concise. Veuillez noter que les connexions de mappage sont considérablement réduites.

mf_excel_convert_example_03

ConvertExcelRows.mfd (part 2)

La logique de mappage est presque identique à celle décrite précédemment :

 

1.Pour chaque ligne dans chaque feuille de calcul source, un item Person dans la cible sera créé.

2.La fonction concat génère le nom de chaque fichier de cible.

3.Le composant de cible a été changé pour générer des noms de fichier dynamiquement.

 

La seule différence est que toutes les feuilles de calcul dans le fichier Excel de source sont itérées implicitement, il n'est pas nécessaire de montrer chaque structure de feuille de calcul séparément et de tracer des connexions de mappage pour chaque feuilles. La raison est que le composant Excel de source a été configuré pour traiter toutes les feuilles de calcul en tant qu'une seule, vous pouvez cliquer sur la touche AddRemove_Selections adjacente à l'item de Feuilles de calcul et observer que la fenêtre Afficher les feuilles de calcul par leur nom n'a pas été sélectionnée.

 

En conclusion, dans cette rubrique, vous avez vu les différences entre le fait de traiter des données de mappage provenant de chaque feuille de calcul Excel et le traitement des toutes les feuilles de calcul en une feuille. Attention, la seconde technique nécessite et implique que la structure de toutes les feuilles de calcul est la même. Dans cet exemple, nous partons du principe que chaque première colonne dans chaque feuille de calcul stocke le prénom de chaque personne, chaque seconde colonne stocke le nm de famille de la personne, etc.

© 2018-2024 Altova GmbH