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 :

Bug sur le Module SpreadSheet::Read


Sujet :

Modules Perl

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 39
    Points
    39
    Par défaut Bug sur le Module SpreadSheet::Read
    Bonjour tout le monde,

    Voilà, j'ai un problème que j'aimerais assez solutionné. Je vous explique :
    Je suis sous windows 8.1, j'ai installé Strawberry et la bibliothèque SpreadSheet::Read via la méthode préconisé et même manuellement, en mettant les fichiers pm dans le dossier C:\Perl64\lib\SpreadSheet.

    Mais alors que mon code est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use strict;
    use warnings;
     
    use Spreadsheet::Read;
    use SpreadSheet::ParseExcel;
     
    my $book  = ReadData ("test.xls"); # .ods .csv .xls .xlsx
    my $cell  = $book->[1]{A3};         # content of field A3 of sheet 1
     
     
    print("cellule : " . $cell);
    ça me met l'erreur :
    Attempt to reload Spreadsheet/ParseExcel/FmtDefault.pm aborted.
    Compilation failed in require at C:/Perl64/lib/SpreadSheet/ParseExcel.pm line 8.
    BEGIN failed--compilation aborted at C:/Perl64/lib/SpreadSheet/ParseExcel.pm line 8.
    Compilation failed in require at exempleQuiFonctionne.pl line 6.
    BEGIN failed--compilation aborted at exempleQuiFonctionne.pl line 6.

    Si quelqu'un a une idée, ça serait fort aimable de sa part de me la communiquer.

    Je commence à devenir...

    Merci d'avance
    Cordialement
    Dominique

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je ne sais pas si c'est l'origine de ton problème, mais essaie de remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use SpreadSheet::ParseExcel;
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use Spreadsheet::ParseExcel;

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 39
    Points
    39
    Par défaut ...
    merci, ça aurait pu ...et ça aurait été super bête de ma part.
    Bon, faut dire que je début dans perl... je suis plus familiarisé avec d'autres langages comme php...

    Mais ça ne change rien.

    Cordialement
    Dominique

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Il faut peut-être aussi corriger le nom du répertoire...

  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
    Citation Envoyé par dominique21000 Voir le message
    j'ai installé Strawberry et la bibliothèque SpreadSheet::Read via la méthode préconisé et même manuellement, en mettant les fichiers pm dans le dossier C:\Perl64\lib\SpreadSheet.
    Ta méthode d'installation me chagrine un peu. Néanmoins, je te recommande d'utiliser les modules suivants :
    SpreadSheet::ParseExcel
    Spreadsheet::XLSX (si ce sont des fichiers xlsx).

    Et pour les installer, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cpan -i SpreadSheet::ParseExcel Spreadsheet::XLSX
    Ne va pas trifouiller les répertoires d'installation.

  6. #6
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 410
    Points : 2 054
    Points
    2 054
    Par défaut
    Bonjour,
    Par curiosité et parce que ça peut servir j'ai fait un essai, mais je ne connais pas le module.

    J'ai installé le module :
    Ça s'est bien passé.

    J'ai lancé ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use strict;
    use warnings;
     
    use Spreadsheet::Read;
    use SpreadSheet::ParseExcel;
     
    my $book  = ReadData ("test.xls"); # .ods .csv .xls .xlsx
    my $cell  = $book->[1]{A3};         # content of field A3 of sheet 1
     
     
    print("cellule : " . $cell);
    Là j'ai obtenu la réponse mais précédée d'erreurs vois image.

    J'ai modifié le pgm comme suit (suppression de use SpreadSheet:arseExcel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use strict;
    use warnings;
     
    use Spreadsheet::Read;
    #use SpreadSheet::ParseExcel;
     
    my $book  = ReadData ("test.xls"); # .ods .csv .xls .xlsx
    #my $cell  = $book->[1]{A4};         # content of field A3 of sheet 1
    my $cell  = $book->[1]{cell}[3][32]; # same, unformatted 
     
    print("\ncellule : " . $cell);
    Ça passe sans erreur.
    Je ne suis pas allé plus loin, voir images :

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par djibril Voir le message
    Ta méthode d'installation me chagrine un peu. Néanmoins, je te recommande d'utiliser les modules suivants :
    SpreadSheet:arseExcel
    Spreadsheet::XLSX (si ce sont des fichiers xlsx).

    Et pour les installer, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cpan -i SpreadSheet::ParseExcel Spreadsheet::XLSX
    Ne va pas trifouiller les répertoires d'installation.
    J'essaie de ne pas trifouiller...parce que je sais que ça fait pas propre, mais j'essaye aussi de comprendre.
    Les paquets semblent bien s'installer, mais ensuite, il ne semble pas les trouver...donc
    - soit il les cherche au(x) mauvais endroit(s)s
    - soit...autres choses

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par dmganges Voir le message
    Bonjour,
    Par curiosité et parce que ça peut servir j'ai fait un essai, mais je ne connais pas le module.

    J'ai installé le module :
    Ça s'est bien passé.

    J'ai lancé ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use strict;
    use warnings;
     
    use Spreadsheet::Read;
    use SpreadSheet::ParseExcel;
     
    my $book  = ReadData ("test.xls"); # .ods .csv .xls .xlsx
    my $cell  = $book->[1]{A3};         # content of field A3 of sheet 1
     
     
    print("cellule : " . $cell);
    Là j'ai obtenu la réponse mais précédée d'erreurs vois image.

    J'ai modifié le pgm comme suit (suppression de use SpreadSheet:arseExcel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use strict;
    use warnings;
     
    use Spreadsheet::Read;
    #use SpreadSheet::ParseExcel;
     
    my $book  = ReadData ("test.xls"); # .ods .csv .xls .xlsx
    #my $cell  = $book->[1]{A4};         # content of field A3 of sheet 1
    my $cell  = $book->[1]{cell}[3][32]; # same, unformatted 
     
    print("\ncellule : " . $cell);
    Ça passe sans erreur.
    Je ne suis pas allé plus loin, voir images :
    Les installations de module se passent bien.

    Mais sans le ParseExcel, j'ai le message :
    Parser for XLS is not installed at exempleQuiFonctionne.pl line 11.

    et avec, j'ai le message d'erreur suivant :
    Attempt to reload Spreadsheet/ParseExcel.pm aborted.
    Compilation failed in require at exempleQuiFonctionne.pl line 6.
    BEGIN failed--compilation aborted at exempleQuiFonctionne.pl line 6.

    Merci pour vos aide en tout cas.
    Cordialement
    Dominique

  9. #9
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    d'après la documentation des modules concernés, les tests de dmganges et tes propres résultats de tests, il semble que:
    • le module Spreadsheet::Read a besoin de SpreadSheet::ParseExcel en interne pour fonctionner correctement avec un fichier Excel;
    • mais que tu ne dois pas faire un use SpreadSheet::ParseExcel toi-même dans ton propre programme, car le chargement de ces deux modules par l'utilisateur génère un conflit (bien que ce conflit génère apparemment des warnings, mais sans doute pas d'erreur bloquante);

    Il semble aussi que le module SpreadSheet::ParseExcel n'est pas installé correctement sur ta bécane. Essaie peut-être de nettoyer tout ce que tu as installé manuellement et de refaire une installation propre et dans les règles de l'art (avec la commande cpanproposée par Djibril) de SpreadSheet::ParseExcel.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Bonjour,

    d'après la documentation des modules concernés, les tests de dmganges et tes propres résultats de tests, il semble que:
    • le module Spreadsheet::Read a besoin de SpreadSheet::ParseExcel en interne pour fonctionner correctement avec un fichier Excel;
    • mais que tu ne dois pas faire un use SpreadSheet::ParseExcel toi-même dans ton propre programme, car le chargement de ces deux modules par l'utilisateur génère un conflit (bien que ce conflit génère apparemment des warnings, mais sans doute pas d'erreur bloquante);

    Il semble aussi que le module SpreadSheet::ParseExcel n'est pas installé correctement sur ta bécane. Essaie peut-être de nettoyer tout ce que tu as installé manuellement et de refaire une installation propre et dans les règles de l'art (avec la commande cpanproposée par Djibril) de SpreadSheet::ParseExcel.
    Merci bien pour votre aide.
    Oui, apparemment, ce ne serait pas le programme en cause, mais l'installation sur me machine.
    J'avais installé Strawberry, ActivePerl...que je viens de désinstallé, histoire d'essayer d'avoir l'installation la plus propre possible.
    Je viens d'installer ActivePerl pour avoir cpan et d'installer à priori les modules Spreadsheet::Read et Spreadsheet:arseExcel avec cpan...

    Résultat :
    Can't locate Spreadsheet/Read.pm in @INC (you may need to install the Spreadsheet::Read module) (@INC contains: C:/Perl64/site/lib C:/Perl64/lib) at exempleQuiFonctionne.pl line 5.
    BEGIN failed--compilation aborted at exempleQuiFonctionne.pl line 5.

  11. #11
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 410
    Points : 2 054
    Points
    2 054
    Par défaut
    Citation Envoyé par dominique21000 Voir le message
    Je viens d'installer ActivePerl pour avoir cpan et d'installer à priori les modules Spreadsheet::Read et Spreadsheet:arseExcel avec cpan...

    Résultat :
    Can't locate Spreadsheet/Read.pm in @INC (you may need to install the Spreadsheet::Read module) (@INC contains: C:/Perl64/site/lib C:/Perl64/lib) at exempleQuiFonctionne.pl line 5.
    BEGIN failed--compilation aborted at exempleQuiFonctionne.pl line 5.
    Tu dis à priori, tu as un doute ?
    car le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Can't locate Spreadsheet/Read.pm in @INC (you may need to install the Spreadsheet::Read module)
    Indique bien que le module n'est pas installé (ou inaccessible pour le Perl lancé).

    Personnellement j'étais aussi sur ActivePerl, je suis passé sur Strawberry car j'avais rencontré des pb de modules sur ActivePerl (sous toutes réserves, les versions anciennes des modules n'étaient plus accessibles à partir de l'interface de MàJ).

    Puisque tu es prêt à démarrer sur un environnement propre, je te suggère de privilégier Strawberry.

    OU, (inclusif ET/OU) en tout état de cause :
    1) - Après désinstallation vérifier qu'il n'existe plus rien de Perl sur C:
    2) - De vérifier et si possible éditer ici tes variables PATH :
    Explorateur :
    Clic droit sur Ordinateur-->Propriétés--> Paramètres systèmes avancés--> Variables d'environnement

    ET tant pour Variables utilisateur que pour Variables Systèmes
    Coller ici les valeurs des PATH

    Pour Variables Systèmes, le plus simple (car elle peut être longue) :
    Clic sur bouton Modifier, ET
    lorsqu'elle est en bleu : <Ctrl-C> dessus
    puis copie (Ctrl-V> dans ton éditeur de texte préféré (plus facile à voir et à modifier). ...

    Mes doutes pour explication :
    - Les Perl n'auraient pas été désinstallés totalement, il resterait physiquement sur le disque exécutables et/ou modules,
    - Le ou les PATH pointeraient en premier sur un environnement vérolé (incomplet), ce qui te laisserait croire que tu as installé Spreadsheet::Read alors que le PATH ne pointe pas en premier dessus

    Ex pour Strawberry:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Files\Java\jre1.8.0_131\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Cygwin64\bin;C:\Program Files\Oracle\VirtualBox;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Windows\System32\Wbem;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files\gs\gs9.15\bin;C:\Program Files (x86)\Balabolka\;C:\ffmpeg\bin\;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static\;C:\Program Files (x86)\Sony\VAIO Startup Setting Tool;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;
    En tout état de cause et comme l'a précisé Lolo78 use SpreadSheet:arseExcel est inutile (à proscrire), au moins en Strawberry

    et ton PATH doit contenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin
    Ou, pour ActivePerl (de mémoire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Perl64\c\bin;C:\Perl64\perl\site\bin;C:\Perl64\perl\bin
    [Edit 12:53]
    Attention :au cas où tu aurais également Cygwin sur ton PC , le Perl de Cygwin peut entrer en conflit avec le Perl de Windows.
    Il est indispensable que, dans le PATH, l’environnement Perl Windows, précède l'environnement Cygwin !

  12. #12
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 490
    Points : 19 534
    Points
    19 534
    Par défaut
    Salut à tous.

    Pour ce faire, j'ai réinstallé la dernière version de ActiveState Perl, soit la 5.26.1.

    Et pour installer les packets , j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ppm install Spreadsheet::Read
    ppm install Spreadsheet::ParseExcel
    J'ai vérifié dans le répertoire "C:\Perl64\site\lib\Spreadsheet", et je trouve bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ParseExcel.pm
    Read.pm
    Il y a aussi un autre répertoire qui se nomme "ParseExcel".

    J'ai fait un test basique :
    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
    #!C:\perl64\bin\perl.exe -w
     
    use strict;
    use warnings;
     
    use Spreadsheet::WriteExcel;
     
    my $book  = Spreadsheet::WriteExcel->new("foo.xls");
    my $sheet = $book->add_worksheet('Ma feuille');
     
    $sheet->write(1,1, "ca fonctionne très bien");
     
    $book->close();
     
    exit;
    Et j'ai vérifié dans le fichier Excel dans la case B2. Je retrouve bien mon message.

    @+

Discussions similaires

  1. Bug ou pas bug sur module PEAR : Console_Getopt
    Par boutmos dans le forum Langage
    Réponses: 3
    Dernier message: 10/10/2014, 17h13
  2. Bug sur la gabarisation des modules de cours
    Par zoom61 dans le forum Evolutions du club
    Réponses: 8
    Dernier message: 17/01/2013, 15h58
  3. Bug sur le read
    Par cquilgars dans le forum Linux
    Réponses: 1
    Dernier message: 15/05/2006, 15h45
  4. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04
  5. Page de rapport de bug sur le site de Sun
    Par piff dans le forum Général Java
    Réponses: 1
    Dernier message: 03/03/2003, 18h12

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