Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2010, 10h05   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 2
Points : 0
Points : 0
Par défaut Convertir un fichier Excel en N fichier XML

Bonjour,

Je souhaite réaliser la transformation suivante :
Soit mon fichier Excel d'entrée suivant
Code :
1
2
3
4
5
6
7
8
9
10
11
 
ColA   ColB   ColC   ColD
fic1    A       45      test
fic1    B       85      test
fic1    C       49      test
fic1    D       89      test
fic2    E       120     test
fic2    F       121     test
fic2    A       111     test
fic3    H       87      test
fic3    D       11      test
L'objectif pour cette exemple est de créer (ou modifier) les 3 fichiers XML
fic1, fic2 et fic3 trouvés en Colonne A pour y insérer les données des colonnes B, C et D correspondantes.
Ainsi, fic1 contiendra seulement les valeurs
Code :
1
2
3
4
5
 
A       45      test
B       85      test
C       49      test
D       89      test
fic2 contiendra seulement les valeurs
Code :
1
2
3
4
 
E       120     test
F       121     test
A       111     test
et fic3 contiendra seulement les valeurs
Code :
1
2
3
 
H       87      test
D       11      test
Le premier problème que je rencontre est de trouver un moyen d'utiliser la colonne A pour initialiser mon tFileOutputXML pour ensuite y insérer les valeurs trouvées au sein des colonnes B, C et D quand la colonne A vaut le nom du fichier utilisé pour initialiser mon tFileOutputXML.

Merci de votre aide
Pierre Jourdat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 15h11   #2
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
Bonjour,

Je te propose une implémentation, mais elle fait autant de lecture du fichier xml que de fichiers à créer, ce n'est donc pas top, il y a peut-être une solution plus efficace...

En flux principal, ne récupérer que la première colonne du fichier pour l'envoyer dans un tUniq, suivi d'un tFlowToIterate puis un nouveau tFileInputExcel, suivi d'un tMap et un tFileOutputXML.
Dans le dernier tMap, tu filtres sur la valeur du nom de fichier que tu récupères du tFlowToIterate, de même dans le tFileOutputXML, tu paramètres le nom du fichier avec cette même valeur. (tu peux la récupérer avec l'auto-complétion)

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 18h22   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 2
Points : 0
Points : 0
Merci beaucoup pour cette astuce. Ca marche à la perfection.

Il me reste toutefois un problème, c'est que les fichiers XML cibles existent déjà et qu'il s'agit de mettre à jour des valeurs dans ces fichier XML existants.
en fait le modèle XML et un resx dotnet et je dois mettre à jour la value dans la zone suivante
Code :
1
2
3
4
5
6
7
8
9
10
 
  <DATA name="TexteSaisieChamps1" xml:space="preserve">
    <value>the FIELD seizure</value>
  </data>
  <DATA name="TexteSaisieChamps2" xml:space="preserve">
    <value>IS obligatory.</value>
  </data>
  <DATA name="TxtPropertyInfoCalendrier" xml:space="preserve">
    <value>Calendar</value>
  </data>
Sachant que mon fichier Excel d'origine contient en colonne A le path du fichier RESX (que votre astuce m'a permis d'utiliser) la colonne B le @name et la colonne C la value. Je crains que ce ne soit pas simple de mettre à jour. En l'état cela m'écrase mon fichier existant.

Si vous avez des idées je suis preneur. En tout cas encore merci pour votre aide.
Pierre Jourdat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h12   #4
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
Je ne pense pas qu'il soit possible de mettre à jour des valeurs dans un fichier xml.
J'imagine que le mieux est donc de lire par exemple le fichier xml qui existe déjà en lookup et de compléter les données avec ce qui vient du fichier excel.

Du coup, tu crées un nouveau fichier xml, mais avec les données du fichier xml original complétées par les données du fichier xls.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h12.


 
 
 
 
Partenaires

Hébergement Web