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 :

Methode et Package


Sujet :

Modules Perl

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut Methode et Package
    Je veux lire un fichier excel puis copier certaines donnees avec leur format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $oWkC = $oWkS->{Cells}[$iR][$iC];
    $valeur = $oWkC->Value, if($oWkC);
    $format = $oWkC->Format, if ($oWkC);
    $SheetAlim->write($iR, $iC, $valeur, $format);
    et ca marche sans la 3eme ligne, mais je souhaite conserver le format du hier original.

    Et je ne comprend pas trop pourquoi j'ai le message ci-dessous dans mon error_log

    [Fri Jul 21 11:35:24 2006] [error] [client 127.0.0.1] [Fri Jul 21 11:35:24 2006] test.pl: Can't locate object method "Format" via package "Spreadsheet:arseExcel::Cell" at /opt/lampp/htdocs/xampp/test.pl line 250., referer: http://localhost/xampp/test.pl

    alors que format.pm est present dans /opt/lampp/lib/perl5/site_perl/Spreadsheet/ParseExcel/

  2. #2
    Expert confirmé
    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
    Par défaut
    Déjà tu fais une erreur de syntaxe (ou plutôt la syntaxe est correcte mais probablement vient d'une erreur) : il n'y a pas de virgule avant le "if".

    Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $oWkC = $oWkS->{Cells}[$iR][$iC];
    $valeur = $oWkC->{Value} if($oWkC);
    $format = $oWkC->{Format} if ($oWkC);
    $SheetAlim->write($iR, $iC, $valeur, $format);
    (Au fait j'espère qu'il manque un bout à ton code, parce que là tu copies sus place...)

    --
    Jedaï

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut
    Jedai :
    ====

    C'est pas un probleme de virgule je viens d'essayer sans et ca fait la meme chose :

    Can't locate object method "Format" via package "Spreadsheet:arseExcel::Cell" at /opt/lampp/htdocs/xampp/test.pl line 250.

    my $SheetAlim = $workbook->add_worksheet("$alimentation");
    # Selection de a page $SheetAlim
    $SheetAlim->select();
    Remplissage de la feuille alimentation
    $valeur = 0;
    my $iR = 0;
    my $iC = 0;
    for($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];
    $valeur = $oWkC->Value if($oWkC);
    $format = $oWkC->Format if ($oWkC);
    $SheetAlim->write($iR, $iC, $valeur, $format);
    }
    }
    # Fermeture du fichier Excel
    $workbook->close();


    quand j'insere : $format = $oWkC->Format if ($oWkC); j'obtiens une erreur sinon ca marche, je recupere bien le contenu de mon fichier excel initial

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Une question bête (c'est tout moi ça ) mais en rajoutant pour tester cette ligne là dans ton code :

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

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut
    Ca y est deja !

    use strict;
    use CGI;
    use HTML::Parser;
    use LWP::UserAgent; # Client html
    use Spreadsheet::ParseExcel; # charge les routines d'extraction des donnees excel.
    #use Excel::Template::Element::Cell;
    use Spreadsheet::ParseExcel::Cell;
    use Spreadsheet::ParseExcel::Format;
    use Spreadsheet::ParseExcel::SaveParser; #
    use Spreadsheet::WriteExcel; # charge les routines de creation de documents excel.
    use Parse::RecDescent;
    use CGI::Carp qw(fatalsToBrowser); # Fonction permettant de tansmettre les message d'erreur Perl dans le
    # navigateur

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par atv_picco
    Ca y est deja !
    En nous distillant ton code morceau par morceau, je ne pouvais pas le deviner

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut
    J'ai pas encore fait de routine alors il est un peu costaud ... dsl
    cependant, toute idee est la bienvenue ...........

  8. #8
    Expert confirmé
    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
    Par défaut
    Reregarde ma réponse, je n'ai peut-être pas été très clair, mais la virgule n'était pas le seul problème de ton code, l'autre était l'emploi de "->Format" (méthode Format(), inexistante) à la place de "->{Format}" (attribut Format, existant)

    --
    Jedaï

  9. #9
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut
    Jedai
    ====

    oki, dsl j'avais pas vu! Bon ca n'arrange a mes petites affaires puisque j'ai une nouvelle erreur dans mon error_log:

    [Mon Jul 24 15:46:15 2006] [error] [client 127.0.0.1] [Mon Jul 24 15:46:15 2006] base_devis.pl: Can't locate object method "get_xf_index" via package "Spreadsheet:arseExcel::Format" at /opt/lampp/lib/perl5/site_perl/5.8.6/Spreadsheet/WriteExcel/Worksheet.pm line 1210.

    Par contre lorque je ne met pas les accolades pour value et que je les met pour le format, la je recupere bien mes donnees mais elles ne sont pas formattées !!!

    Je suis un peu depassé par les evenements-la ! Ca doit etre la chaleur ..... en j'espere!

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2012, 10h28
  2. Can't locate object method "new" via package "URI"
    Par climz dans le forum Modules
    Réponses: 2
    Dernier message: 17/01/2008, 10h21
  3. Package present mais methode non reconnu !!
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 13/12/2005, 10h19
  4. Methode de drcherche a l,interieur de basse de donner texte
    Par philippe V dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 03/12/2002, 10h20

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