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

Modules Perl Discussion :

Problème pour lire un fichier EXCEL


Sujet :

Modules Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut Problème pour lire un fichier EXCEL
    Bonjour a tous.

    Je cherche à lire un fichier EXCEL et, plus exactement, le premier onglet en particulier. Mon but est de sauvegarder le contenu de cet onglet pour réinjecter les données sauvegardés lors de la prochaine génération de ce fichier EXCEL. Ce fichier EXCEL est générer par du perl avec le module WriteExcel

    En toute logique, j'ai été sur pour télécharger le module Spreadsheet:: ParseExcel

    Et j'ai fait ce tout petit morceau de code la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    use strict;
    use warnings;
    use File::Basename;
    use Spreadsheet::ParseExcel;
    # use Spreadsheet::WriteExcel;
    use POSIX;
     
    my $file = "C:\\script\\Calendrier2008\\TestLecture\\ACH-PF_COS.xls";
    my $excel = Spreadsheet::ParseExcel->read('$file');
    Mon soucis est que, quand je lance mon script, j'obtient cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Weak references are not implemented in the version of perl at D:/Perl/lib/Spreadsheet/ParseExcel.pm line 67
    BEGIN failed--compilation aborted at D:/Perl/lib/Spreadsheet/ParseExcel.pm line 67.
    Compilation failed in require at C:\script\Calendrier2008\TestLecture\LectureExcel.pl line 4.
    BEGIN failed--compilation aborted at C:\script\Calendrier2008\TestLecture\LectureExcel.pl line 4.
    Si je regarde la ligne 67 du ParseExcel.pm j'ai cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use Scalar::Util qw(weaken);
    et j'ai bien le Scalar d'installé.

    Pour info, je suis en PERL 5.6.1

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    use strict;
    use warnings;
    use File::Basename;
    use Spreadsheet::ParseExcel;
    # use Spreadsheet::WriteExcel;
    use POSIX;
     
    my $file = "C:/script/Calendrier2008/TestLecture/ACH-PF_COS.xls";
    my $excel = Spreadsheet::ParseExcel->read($file);
    Pas besoin de \\ en perl pour les chemins, il comprend parfaitement les /

    et pour ta boulette, tu as mis '$file' au lieu de $file ou "$file" et entre simple quote veut dire pas d'interpolation

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Merci djibril mais cela ne change rien du tout.

    Que je mette $toto à la place de $file et que j'enleve les simples côte ne change rien.

    Visiblement, comme je l'indique au début, je doit avoir un problème, non pas au niveau du script, mais au niveau du module :
    --> BEGIN failed--compilation aborted at D:/Perl/lib/Spreadsheet/ParseExcel.pm line <--

    Selon le site CPAN, j'ai même vérifié ou téléchargé les modules :
    IO::File
    IO::Scalar
    Scalar::Util
    OLE::Storage_Lite

    Cela ne change rien et je craque


    Si quelqu'un a une idée à me soumettre pour extraire les données d'un onglet
    d'un fichier excel, je lui offre un café

  4. #4
    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
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use File::Basename;
    use Spreadsheet::ParseExcel;
     
    my $file = "C:/script/Calendrier2008/TestLecture/ACH-PF_COS.xls";
    my $oBook = Spreadsheet::ParseExcel::Workbook->Parse($file) or die ("$!");
     
    my($iR, $iC, $oWkS, $oWkC);   
    foreach my $oWkS (@{$oBook->{Worksheet}}) {
        for(my $iR = $oWkS->{MinRow} ; defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) {  
            for(my $iC = $oWkS->{MinCol} ; defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) {  
              $oWkC = $oWkS->{Cells}[$iR][$iC];
              if(defined $oWkC) {
                print $oWkC->Value,"\t"; 
              } 
              else {
                print  "\t";
              }  
            }  
            print  "\n"; 
          }
      }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Heueue, merci pour ta réponse DJIBRIL, mais je sait que cela ne va pas marcher.

    Pourquoi ?? Parce que tu utilises le Spreadsheet:: ParseExcel qui est le module que je n'arrive pas à faire marcher sur mon poste

    Il faut bien comprendre que ce n'est pas l'écriture du script qui me pose soucis, mais le chargement du module, uniquement le chargement du module, seulement le chargement du module

    Je pense que je devrait modifier le nom de ce post pour que cela soit plus clair .....

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Tu peux aussi utiliser Win32::OLE, il permet également de manipuler des fichiers Excel.
    http://search.cpan.org/~jdb/Win32-OL...2/OLE/Const.pm

    Jasmine,

  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
    Citation Envoyé par baloo81 Voir le message
    Heueue, merci pour ta réponse DJIBRIL, mais je sait que cela ne va pas marcher.

    Pourquoi ?? Parce que tu utilises le Spreadsheet:: ParseExcel qui est le module que je n'arrive pas à faire marcher sur mon poste

    Il faut bien comprendre que ce n'est pas l'écriture du script qui me pose soucis, mais le chargement du module, uniquement le chargement du module, seulement le chargement du module

    Je pense que je devrait modifier le nom de ce post pour que cela soit plus clair .....
    Dans l'art de ne pas donner de précision, tu sembles être champion.
    Dans ce cas, pourquoi n'arrive tu pas à charger le module? l'as tu installé?
    Si non, pourquoi?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Désolé DJIBRIL, il me semblait avoir été clair

    Comme je le disait dans mon premier post, j'ai installé le module mais quand je lance mon script, cela me répond ça :

    Weak references are not implemented in the version of perl at D:/Perl/lib/Spreadsheet/ParseExcel.pm line 67
    BEGIN failed--compilation aborted at D:/Perl/lib/Spreadsheet/ParseExcel.pm line


    Comme indiqué dans mon deuxième post
    Selon le site CPAN, j'ai même vérifié ou téléchargé les modules :
    IO::File
    IO::Scalar
    Scalar::Util
    OLE::Storage_Lite
    Par contre, il y a une précision très importante que je n'ai pas fait : je doit faire tourner ce script sur un serveur Windows où le PackOffice n'est pas installé.
    Je cherche donc une réponse au Weak references are .....

  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
    J'ai pas fait gaffe, mais tu es sous Perl 5.6 .
    C'est une version ancêtre de Perl, faut que tu passes à une version récente de Perl, notamment, 5.8.8.822

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    C'est bien ce que je craignais

    Le soucis c'est que je suis en entreprise et je vais pas pouvoir faire ça comme ça ( car environnement soumis à la validation pharmaceutique )

    Bon, j'ai plus qu'à mettre en place une autre solution à laquelle j'ai déjà réfléchi.

    Merci quand même DJIBRIL et à toi aussi JASMINE.

    Je clôture ce post.

    A la prochaine ......

  11. #11
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Attends, la solution de Jasmine devrait fonctionner pour toi, tu peux aussi essayer d'installer une vieille version de Spreadsheet::... du temps où il était encore compatible avec Perl 5.6 (qui doit tout de même avoir dans les 8 ans... enfin je sais comme c'est en entreprise).

    --
    Jedaï

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Merci JEDAI.

    J'ai vaguement testé la solution de JASMINE. Le soucis est que je souhaite produire et relire ces fichiers sur un serveur où n'est pas installé EXCEL. La création fonctionne bien mais, visiblement, cela ne marche pas pour la relecture.

    Je vais essayer de faire tout ça sur un serveur UNIX ou LINUX car là, je suis bien en version 5.8 du PERL.

    Je vous tiendrais au courant

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bon, pour information, comme je n'arrive à rien, j'ai abandonné l'idée de départ. En plus, j'ai trouvé un freeware se nommant XLS2CSV, qui ne demande pas d'installe et qui fonctionne en mode commande alors ....

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/02/2010, 16h09
  2. Problème pour lire un fichier Xml avec Xpath
    Par adrix26 dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/11/2008, 17h06
  3. problème pour lire une feuille excel a partir d'Access
    Par h_adil dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/07/2008, 23h44
  4. problème pour lire un fichier wav
    Par r0d dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/05/2007, 19h56
  5. [C#] Problème pour lire un fichier xml
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/06/2006, 23h12

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