IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[file::find] probleme avec les arguments obtenus


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut [file::find] probleme avec les arguments obtenus
    bonjour a tous je suis tout nouveaux et c'est mon premier post j’espère respecter les réglés du forum bon j ai un problème avec mon code j utilise le module file::find pour avoir le chemin de n importe quelle fichier excel se trouvant dans une arborescence le code me retourne le chemin comme suit :
    c:\X/Y/Z.xls pourvu que je veux que le chemin soit de la forme classique c:\X\Y\Z.xls car je vais prendre les chemin de ce code pour ouvrir les fichier excel
    avec une autre fonction voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     #!/usr/bin/perl
        #use warnings;
        use strict;
        use File::Find;
        use Cwd;
        use Win32::OLE qw(in with);                              
    print 'entrer le lien : ';
    $a = <STDIN>;
    my $b = chomp($a);
    my $repertoire = "$a";  
    find( { wanted => \&process, }, $repertoire );
    my @fichier;
     my $fichier;
      my $i=0;
    sub process {
       if (( -f $File::Find::name) && ($File::Find::name =~ m/[a-z]*.xls$/) ) 
        {
             #my $i=0;
             foreach ($File::Find::name)
             {
             $fichier[$i]= $File::Find::name;
             $i++;
             }  
        }  
    }
    for ($i = 0;$i <3; $i++) {
    my $c = chomp($fichier[$i]);
    print"$fichier[$i]\n";
    }

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    merci mais votre lien ne marche pas deja est ce que dans ton lien on cherche dans toute l arboressence car moi j ai besoin de donner par exemple c:\ et le programe doit chercher dans tout le disque dur et trouver des fichier excel

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    votre lien a marché mais c est pas d une grande aide puisque moi je cherche a ouvrir tout dossier qu il y a partir d'un chemin et chercher les fichier qui ont l extention .xls mon code marche bien j ai qu un problem que j ai posé c est avec les slach

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Inspire toi de ce programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #!/usr/bin/perl
    use strict;
    use warnings;
    use File::Find;
    use File::Spec;
     
    use Cwd;
    use Win32::OLE qw(in with);
    my @fichiers;
    print 'entrer le lien : ';
    my $repertoire = <STDIN>;
    chomp $repertoire;
    find( { wanted => \&process, }, $repertoire );
     
    sub process {
      my $fichier = $File::Find::name;
     
      if ( ( -f $fichier ) && ( $fichier =~ m/[a-z]*.xlsx?/ ) ) {
        $fichier = File::Spec->catfile($fichier);
        push @fichiers, $fichier;
      }
    }
     
    foreach my $file (@fichiers) {
      print "- $file\n";
    }

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    bonjour votre code m'est vraiment utile merci mais j'ai pas compris comment vous avez fais puisque je veux modifier le code pour avoir l les liens sous la forme c:\\perl\\y\\... car je veux rentrer ces liens comme argument pour une fonction Open('c:\\perl\\y\\... ') et merci d'avance.

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Il ne faut pas utiliser des chemins avec \\.

    Comment utiliser des noms de fichiers ou répertoires portables ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    dsl je me suis trompé c'est open ("c:\\perl\\y\\..) voici mon code complet pour que vous me comprenez mon code consiste a ouvrir n importe quelle fichier excel a partir d #!/usr/bin/perl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    use strict;
    use warnings;
    use File::Find;
    use File::Spec;
    use Cwd;
    use Win32::OLE qw(in with);
    use Win32::OLE::Const 'Microsoft Excel';
    use Spreadsheet::ParseExcel;
    $Win32::OLE::Warn = 3;         
     
     
    my @fichiers;
    print 'entrer le lien : ';
    my $repertoire = <STDIN>;
    my @fichier;
    my $i = 0;
    chomp $repertoire;
    find( { wanted => \&process, }, $repertoire );
     
    sub process {
      my $fichier = $File::Find::name;
     
      if ( ( -f $fichier ) && ( $fichier =~ m/[a-z]*.xlsx?/ ) ) {
        $fichier = File::Spec->catfile($fichier);
        push @fichiers, $fichier;
      }
    }
     
    foreach my $file (@fichiers) {
      #print "$file\n";
     
      $fichier[$i]= $file;
     
             #print"$fichier[$i]\n";
                      $i++;
     
      }
     
       for (my $i=0; $i <= 2; $i++) {
    #print $fruit[$i];
     
        my $c = chomp($fichier[$i]);
     
    #my $repertoire1 = "$fichier[$i]"; 
     
     
       my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
            || Win32::OLE->new('Excel.Application', 'Quit');  # utilise le process Excel en cours
     # d'application ou ouverture d'une nouvelle
        my $Book = $Excel->Workbooks->Open("$fichier[$i]"); # ouvre un fichier Excel
        my $Sheet = $Book->Worksheets(1);                     # selectionne la feuille numéro 1
     
     
        my $last_row = $Sheet->UsedRange->Find({What => "*", SearchDirection=>xlPrevious, SearchOrder=>xlByRows})->{Row};
     
     
     
       my $array = $Sheet->Range("A1:A$last_row")->{'Value'};        # Recupere le contenu
     
        $Book->Close;
     
     
        open(FILE, ">file.txt");
            foreach my $ref_array (@$array) {
              foreach my $scalar (@$ref_array) {     
          print FILE ("$scalar \t");
    }
    print FILE "\n";
    } 
    }   une arborescence et pour chaque fichier creer un fichier txt
    j'ai le problem avec la fonction open () pour ouvrir le lien pris du code que vous m'avez proposé.

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Votre progamme fait tout et n'importe quoi, des boucles inutiles...
    Bref, qu'elle est le but concret de votre programme ?

    N.B. Merci de mettre des apostrophes dans vos phrases car la lecture est assez désagréable.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    desolé pour mon écriture le but de mon programe est de chercher a partir d'un chemain tout les fichiers excel appartenant a l'arborescence puis les ouvrir et prendre des case bien déterminer du fichier excel et les ecrire pour chaque fichier excel trouver dans un fichier txt séparer

  11. #11
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Vous connaissez les noms de fichiers excel que vous cherchez ?
    Le bout de code que je vous ai donné vous permet déjà de parcourir proprement le répertoire.
    Pour lire le fichier Excel, le module Spreadsheet::ParseExcel est suffisant.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    oui le code parcour les repertoir et fais tout le problem c est que pour la fontion open du module Spreadsheet:arseExcel quand je recupere le chemin des fichiers pour les donner a la fonction open c'est la ou il y a l'erreur puisque j'ai déja essaier la fontion et elle m'ouvre les liens sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     my $Book = $Excel->Workbooks->Open("C:\\X\\Y.xls")
    , le lien que je recupere avec le code que vous m'avez proposé est sous la forme c:\X\Y c'est la où j ai l erreur et je fais des boucle pour que a chaque fichier excel trouvé on lui associe a fichier txt.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    bonjour j ai pu resoudre le problem j ai fait un open tout court comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       my $Book = $Excel->Workbooks->Open($fichier[$i])
    merci beaucoup djibril tu etais d'une grande aide ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec les arguments
    Par Pitou5464 dans le forum C
    Réponses: 6
    Dernier message: 06/11/2006, 16h16
  2. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  3. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  4. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo