|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Bonjour
Dans Talend data Quality (interface dev. idem que TOS] je voudrais définir une expression régulière afin de commencer la lecture de mon fichier Excel à partir de 4ème feuille. Et ... je n'y arrive pas. Pour indiquer la position de la feuille, j'utilise : //([3-9]|[0-9]+)//, mais cela ne marche pas. La ligne java est Code :
sheetList_tFileInputExcel_2.addAll(regexUtil_tFileInputExcel_2.getSheets(workbook_tFileInputExcel_2, //([3-9]|[0-9]+)//, true)); Je crois que c'est un problème d'utilisation de "\" ou "\\" ou ... Faut-il mettre des guillemets, slashes, antislashes ? Je n'arrive même pas à lui dire bêtement de lire les feuilles : 4, 5, 6 avec l'expression suivante: \\[345]\\. Cela donne aussi des erreurs de syntaxe. Merci d'avance de votre aide msomso |
|
|
00
|
|
|
#2 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
Bonjour,
pour les guillemets c'est sur qu'il les faut. Après je ne connais pas assez les regex pour t'aider plus... mais double les \\ si tu as besoin d'en mettre
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
J'ai l'impression qu'en mettant les ", il s'attend à un nom et non au nombre=position de la feuille.
|
|
|
00
|
|
|
#4 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
Passe en mode Source et regarde ce qu'attend la méthode getSheets comme type de paramètres. Tu sauras si tu dois mettre un entier, une chaine et si c est le cas est ce que c est le nom de la feuille (je pense que c est le cas) ou est ce une Regex.
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Je ne connais pas Java, comment "passer en mode Source" ?
Cependant en indiquant juste un numéro "en dur" (par exemple 3 sans côtes/guillemets/etc) cela fonctionne. Donc la fonction doit gérer les 2 types de paramètres, je crois. J'arrive à utiliser les REGEX pour les noms de feuilles, mais j'aurais voulu pouvoir indiquer la position initiale au lieu d'exclure les noms de 3 premières feuilles. |
|
|
00
|
|
|
#6 | ||
|
Membre chevronné
![]() Inscription : novembre 2004 Messages : 569 ![]() |
Lorsque tu utilise un inputExcel voilà ce que talend génère comme code pour récupérer les sheets :
Code :
Soit l’index de la feuille (entier) Pour l’expression régulière tu peux faire En regardant de près le code, je ne crois pas que Talend itére sur l’index de la feuille. La méthode getSheets prend soit un index ou un string (nom ou expression régulière) |
||
|
|
00
|
|
|
#7 | |||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Bonjour
Non, avec expression proposée "^(3|4)" j'ai: Citation:
Avec l'expression "^(3|4)" il ne trouve que la feuille du nom "3". Avec l'expression "^(3|4)[a-z]*" il trouve les 2 feuilles du nom "3" et "4as". Mais comment obtenir la lecture à partir de la N-ième feuille ? Comment passer un nombre avec une REGEX ? Je crois qu'il ne faut pas utiliser de guillemets En passant REGEX (sans "") : (3|4), il m'ouvre la feuille N°7 (en comptant 0,1,2,..., 7) (1|4), il m'ouvre la feuille N°5 (en comptant 0,1,2,..., 5) Le code java est : Code :
Ou trouver le codesource de la fonction "getSheets" ? D'avance merci msomso |
|||
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Bonjour
D'après le support Talend il n'est pas possible d'utiliser REGEX pour les numéros de feuilles: http://="http://www.talendforge.org/...=51049#p51049" Merci msomso |
|
|
00
|
|
|
#9 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
Pour te répondre malgré tout, quand tu fais :
Tu fais un OU binaire via l'opérateur | (pipe). Si tu as fait un peu de calcul binaire tu sais que 3 | 4 => 7 car 3=011 en binaire, et 4 = 100, donc le OU te renvoies 111 soit 7 ! Voilou
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#10 | ||
|
Membre chevronné
![]() Inscription : novembre 2004 Messages : 569 ![]() |
L'utilisation de l'opérateur | est un OR exlusive
Code :
Code :
9 | 12 (1001 | 1100) retourne 13 (1101) Maintenant je ne pense pas qu'on puisse boucler sur un tableau au moment d'appeler la méthode. Java ne le permet pas à ma connaissance. Mais tu peux toujours utiliser le composant tloop par exemple avec une variable N° feuille. Et tu la passe en paramètre à ton inputExcel. Mais cela induit d'ouvrir le fichier autant de fois que lire les onglets... |
||
|
|
00
|
|
|
#11 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
Si je peux me permettre ce n'est pas un OR exclusif, un OR exclusif renvoie 0 pour 1 | 1
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Bonjour
Merci pour vos explications. La solution avec tLoop est intéressante et suggérée aussi par le support Talend. Son inconvénient est qu'il faut connaître d'avance le nombre de feuilles à traiter. Dans notre cas le nombre de feuilles sera variable, donc cela nous oblige à gérer un paramètre supplémentaire. Pour le moment, j'ouvre mon fichier avec l'option "Toutes les feuilles" et j'exclue les 3 premières. L'inconvénient, c'est que Talend lis les lignes vides dans chaque feuilles, il faut donc un filtre supplémentaire pour les exclure. L'option "Terminer la lecture sur ligne vide" doit être désactivée pour passer à la feuille suivante. msomso |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com