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 :

Perl et excel !


Sujet :

Modules Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Perl et excel !
    bonjour j'ai un soucis qui me laisse perplexe !

    je souhte realiser un formulaire html qui recupere des donnees dans un fichier excel pour obtenir les valeurs des differents champs de mon formlaire puis une fois formulaire, on ecrit les resultats dans une base de donnees et l'on genere un fichier ex en fonction des choix saisis dans le formulaire.

    j'arrive a recuperer des donnees dans un fichier excel et a ecrire dedans. J'ai creer un serveur local avec Apache.

    je suis sous linux avec une distrbution Kubuntu Dapper, et je travaille avec Kate.

    J'ai creer un formulaire html puis je l'ai deposer sur le serveur. => OK ca fonctionne !
    mais des que j'insere cette ligne dans mon script : use Spreadsheet::ParseExcel;


    j'obtiens la reponse suivante : Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, you@your.address and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.
    Apache/2.0.53 (Unix) mod_ssl/2.0.53 OpenSSL/0.9.7d PHP/5.0.3 DAV/2 mod_perl/1.999.21 Perl/v5.8.6 Server at localhost Port 80


    De plus, j'ai apercu un post similaire mais pour windows ou il parlait de WIN32::OLE, OLE??? Qu'est-ce que c'est? a quoi ca sert ?

    Merci d'avance


    ps : Pour info 'utilise la methode GET dans mon formulaire !

  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 : 499 184
    Points
    499 184
    Par défaut
    ta page signifie juste que tu as des erreurs dans ton code perl cgi. Il faut que tu ailles voir ton fichiers logs pour y voir les messages d'erreur perl

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci Djibril.

    J'ai donc un soucis avec OLE/Storage_Lite.pm
    Il me suffit donc ajouter la librairie si je comprends bien.
    Mais elle fait quoi exactement, j'ai fait unour sur le site CPAN, mais ca reste flou

  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 : 499 184
    Points
    499 184
    Par défaut
    quels sont les messages d'erreurs de tes logs, sans ça personne ne peut t'aider

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 57
    Points
    57
    Par défaut
    Bon sans voir le code ca peut rester flou mais je dirais que tu mélange les méthode tu doit faire une partit de ton code avec OLE et l'autre avec spreadsheet, ca marche pas super généralement

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    OK merci !
    J'ai resolu mon pb. Il me fallait installer OLE_storage_lite
    voila quand meme le contenu de mon error_log :

    [Mon Jul 17 08:06:24 2006] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/favicon.ico
    [Mon Jul 17 08:48:29 2006] [error] [client 127.0.0.1] Can't locate OLE/Storage_Lite.pm in @INC (@INC contains: /opt/lampp/lib/perl5/5.8.6/i686
    -linux /opt/lampp/lib/perl5/5.8.6 /opt/lampp/lib/perl5/site_perl/5.8.6/i686-linux /opt/lampp/lib/perl5/site_perl/5.8.6 /opt/lampp/lib/perl5/si
    te_perl .) at /opt/lampp/lib/perl5/site_perl/5.8.6/Spreadsheet/ParseExcel.pm line 176.
    [Mon Jul 17 08:48:29 2006] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /opt/lampp/lib/perl5/site_perl/5.8.6/Spreadsheet/Pa
    rseExcel.pm line 176.
    [Mon Jul 17 08:48:29 2006] [error] [client 127.0.0.1] Compilation failed in require at /opt/lampp/htdocs/xampp/devis.pl line 11.
    [Mon Jul 17 08:48:29 2006] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /opt/lampp/htdocs/xampp/devis.pl line 11.
    [Mon Jul 17 08:48:29 2006] [error] [client 127.0.0.1] Premature end of script headers: devis.pl


    Maintenant j'arrive a ouvrir mon fichier excel et je recupere correctement mes donnees, cependant, je voudrais apres validation de mon formulaire creer un autre fichier excel et la j'ai encore un hic !!!


    error_log : [Tue Jul 18 10:50:54 2006] [error] [client 127.0.0.1] [Tue Jul 18 10:50:54 2006] devis.pl: Can't open perl.xls. It may be in use or protected at /opt/lampp/htdocs/xampp/devis.pl line 77, referer: http://localhost/xampp/devis.pl
    [Tue Jul 18 10:50:54 2006] [error] [client 127.0.0.1] [Tue Jul 18 10:50:54 2006] devis.pl: Can't call method "AddWorksheet" on an undefined value at /opt/lampp/htdocs/xampp/devis.pl line 177., referer: http://localhost/xampp/devis.pl



    Script Perl :

    use Spreadsheet::ParseExcel;
    use Spreadsheet::ParseExcel::SaveParser;
    use Spreadsheet::WriteExcel;

    line 77 my $workbook = Spreadsheet::WriteExcel->new('test_write_excel.xls');

    line 177 my $SumUp = $workbook->AddWorksheet();
    line 178 my $SheetAlim = $workbook->AddWorksheet();


    Avec $SumUp et $SheetAlim les variables representants mes feuilles excel a moins que je me trompe, je n'en suis pas sur a 100% car je debute en perl

  7. #7
    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
    Citation Envoyé par atv_picco
    error_log : [Tue Jul 18 10:50:54 2006] [error] [client 127.0.0.1] [Tue Jul 18 10:50:54 2006] devis.pl: Can't open perl.xls. It may be in use or protected at /opt/lampp/htdocs/xampp/devis.pl line 77, referer: http://localhost/xampp/devis.pl


    Là il te dit qu'il n'arrive pas à ouvrir en écriture le fichier perl.xls (normalement d'après ton code il devrait s'agir de test_write_excel.xls ??). Peut-être un problème de droit.

    Citation Envoyé par atv_picco
    [Tue Jul 18 10:50:54 2006] [error] [client 127.0.0.1] [Tue Jul 18 10:50:54 2006] devis.pl: Can't call method "AddWorksheet" on an undefined value at /opt/lampp/htdocs/xampp/devis.pl line 177., referer: http://localhost/xampp/devis.pl
    Citation Envoyé par atv_picco
    A partir de là la création de l'objet ayant échoué, il est normal que tu ne puisses pas appeler de méthode dessus, a priori le problème n'est pas là.

    --
    Jedaï

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Yep, j'suis d'accord avec toi, Jedaï sur le fait que le script n'arrive pas a ouvrir le fichier! (pour les noms differents c'est parce que j'avais fait des modifs entre temps) Mais en ce qui concerne les droits j'ai fait un "chmod 755" sur le repertoire des documents disponibles sur le serveur. Mais je souhaite cree un fichier excel alors comment gerer les droits ?!? puisque je voudrais que le script cree un nouveau fichier excel. Cela dit, il me cree le fichier excel de temps en temps, des fois il meme vide !!!

    voila mon dernier error_log :
    [Tue Jul 18 13:38:16 2006] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/favicon.ico [Tue Jul 18 13:38:27 2006] [error] [client 127.0.0.1] [Tue Jul 18 13:38:27 2006] devis.pl: Can't open perl.xls. It may be in use or protected at /opt/lampp/htdocs/xampp/devis.pl line 77 [Tue Jul 18 13:38:27 2006] [error] [client 127.0.0.1] [Tue Jul 18 13:38:27 2006] devis.pl: Can't call method "add_worksheet" on an undefined value at /opt/lampp/htdocs/xampp/devis.pl line 78.

    C'est quoi le favicon.ico ??? comment y remedier

  9. #9
    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
    favicon.ico est juste la petite icone que mettrait le navigateur à côté du nom de ton site si elle existait, rien à voir avec notre problème. Peux-tu nous montrer ton code ?

    --
    Jedaï

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    C'est archi brouillon mais j'ai commente mon code donc ca devrait aller.
    Fonctionnnalites :
    - ouverture d'un fichier excel
    - recup alim dans un tableau
    - idem pour les options
    - formulaire html
    et la je voudrais pouvoir ecrire en fonction du resultat du formulaire dans un nouveau fichier excel.
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
     
     
    #!/opt/lampp/bin/perl
     
     
     
    # Inclusion des librairies :
    # --------------------------
     
    use strict;
    use CGI;
    use HTML::Parser;
    use LWP::UserAgent; 				# Client html
    use Spreadsheet::ParseExcel;			# charge les routines d'extraction des donnees excel.
    use Spreadsheet::ParseExcel::SaveParser;	#
    use Spreadsheet::WriteExcel;			# charge les routines de creation de documents excel.
    use CGI::Carp qw(fatalsToBrowser);		# Fonction permettant de tansmettre les message d'erreur Perl dans le
    						# navigateur
     
     
    # Declaration des variables :
    # ---------------------------
     
    my $form = new CGI;					# Cree un nouvel objet CGI
    my $client=$form->param("NomClient");			#
    my $type=$form->param("TypePanneau");			#
    my $gamme=$form->param("GammePanneau");			#
    my $classe=$form->param("ClassePanneau");		#
    my $taille=$form->param("TaillePanneau");		#
    my $mat=$form->param("Mat");				#
    my $diametre=$form->param("Diametre");			#
    my $haut=$form->param("Hauteur");			#
    my $collier=$form->param("ChoixCollier");		#
    my $affichage=$form->param("ChoixAffichage");		#
    my $nbled=$form->param("NbLEDs");			#
    my $couleur=$form->param("CouleurLEDs");		#
    my $caisson=$form->param("Caisson");			#
    my $revetement=$form->param("RevetementCaisson");	#
    my $commentaires=$form->param("Commentaires");		#
    my $alimentation=$form->param("Alimentation");		#
     
    my $auteur = "Moi";
    my $hauteur1 = "2 metres";				#
    my $hauteur2 = "2,5 metres";				#
    my $hauteur3 = "3 metres";				#
    my $hauteur4 = "3,5 metres";				#
    my $hauteur5 = "4 metres";				#
    my $alim ="Alimentation";				#
    my $date;						#
     
    my $line;
     
     
    # Cretion d'un nouvel objet Excel pour l'extraction des donnees Excel.
    my $oExcel = new Spreadsheet::ParseExcel;
     
    # Ouverture du fichier excel de donnees :
    my $fichier = 'PANNEAU 1 MESSAGE.xls';
    my $oBook = $oExcel->Parse($fichier);
    my($iR, $iC, $oWkS, $oWkC);			# Indices de ligne, de colonne, de feuille et de cellule.
    my $Classeur;	# = $oExcel1->Write();
    my $iFeuille;
    my $WriteExcel = '/home/nico/testexcel.xls'
    my $workbook = Spreadsheet::WriteExcel->new($WriteExcel);
    my $worksheet = $workbook->add_worksheet('Resume');
    $worksheet->write(1, 1,  "Hi Excel!");
    $workbook->close();
     
     
    # Boucle permettant de parcourir toutes les feuilles du classeur.
    for($iSheet=0; $iSheet < $oBook->{SheetCount}-$nb_feuilles_adm ; $iSheet++)
    {
    	$oWkS = $oBook->{Worksheet}[$iSheet];
    	# Enregistrement du nom de la feuille dans le fichier : nom_feuilles.txt
    #	print NOMFEUILLES $iSheet , ";", $oWkS->{Name}, "-";
    	$tab_feuilles[$iSheet] = $oWkS->{Name}.";";
    }
    # Fermeture du fichier
    #close  (NOMFEUILLES);
    #print @tab_feuilles;
     
     
    # Recherche des types d'alimentation :
    # ------------------------------------
     
    # creation du tableau @tab_alim qui contiendra tous les type d'alimentation.
    $iSheet = 0;
    # Insertion de la valeur par defaut, specifiant le type de popup
    push(@tab_alim,$alim);
     
    # Boucle qui repere les types d'alim et les met dans la liste @tab_alim
    while ($iSheet < $#tab_feuilles)
    {
    	if ($tab_feuilles[$iSheet] =~ m/Alim/i)
    	{
    		$tab_feuilles[$iSheet] =~ s/;//;
    		push(@tab_alim,$tab_feuilles[$iSheet]);
    	}
    	$iSheet++;
    }
     
    # Recherche des options :
    # -----------------------
     
    # creation du tableau @tab_options qui contiendra tous les type d'options.
    $iSheet = 0;
    while ($iSheet < $#tab_feuilles)
    {
    	if ($tab_feuilles[$iSheet] !~ /Alim/i)
    	{
    		$tab_feuilles[$iSheet] =~ s/;//;
    		push(@tab_options,$tab_feuilles[$iSheet]);
    	}
    	$iSheet++;
    }
     
    print $form->start_html('Devis'), 		# Debute le HTML
    	$form->h1('Creation de devis'),		# Entete de niveau 1
    	$form->hr({-noshade => undef, -size => '1'}),
    	$form->p("Selectionnez les criteres pour obtenir un devis Excel.");
     
     
     
     
     
    	# Creation du formulaire
    print $form->start_form(
    		-action=>'devis.pl',
    		-method=>'get',
    		-enctype=>'x-www-form-urlencoded'),
    	# Creation d'un tableau html contenant les champs du formulaire
    	$form->start_table({ border => 0 , cellpadding => 5 , cellspacing => 5 }),
    	$form->Tr(''),
    	# Informations  :
    	$form->Tr($form->td("Nom : "),
    		$form->td($form->textfield(
    			-name=>'Nom',
    			-size=>25))),
    	# Choix Type
    	$form->Tr($form->td('Type de panneau'),
    		$form->td($form->radio_group(
    		-name=>'TypePanneau',
    		-values=>['Danger','Prescription']))),
    	# Choix gamme
    	$form->Tr($form->td(),
    		$form->td($form->radio_group(
    		-name=>'GammePanneau',
    		-values=>['Panneau LEDs	','Prestige renforce LEDs'],
    		-default=>'Gammme'))),
    	# Choix Classe
    	$form->Tr($form->td('Classe du panneau'),
    		$form->td($form->radio_group(
    		-name=>'ClassePanneau',
    		-values=>['Classe 1','Classe 2'],
    		-default=>'Classe'))),
    	# Choix Taille
    	$form->Tr($form->td('Taille du panneau'),
    		$form->td($form->radio_group(
    		-name=>'TaillePanneau',
    		-values=>['Petite','Moyenne','Grande'],
    		-default=>'Taille'))),
    	# Choix mat
    	$form->Tr($form->td('Support'),
    		$form->td($form->radio_group(
    		-name=>'Mat',
    		-values=>['Oui','Non']))),
    	# Choix diametre mat
    	$form->Tr($form->td('Diametre du mat'),
    		$form->td($form->radio_group(
    		-name=>'Diametre',
    		-values=>['125 mm','90 mm','80 mm','40 mm']))),
    	# Choix Hauteur
    	$form->Tr($form->td('Hauteur du support'),
    		$form->td($form->popup_menu(
    		-name=>'Hauteur',
    		-values=>[$hauteur,$hauteur1,$hauteur2,$hauteur3,$hauteur4,$hauteur5],
    		-default=>$hauteur))),
    	# Choix Collier
    	$form->Tr($form->td('Choix collier'),
    		$form->td($form->radio_group(
    		-name=>'ChoixCollier',
    		-values=>['Simple','Double'],
    		-default=>'Collier'))),
    	# Choix Affichage
    	$form->Tr($form->td('Choix affichage'),
     		$form->td($form->radio_group(
    		-name=>'ChoixAffichage',
    		-values=>['Contour','Motif','Contour et Motif'],
    		-default=>'Affichage'))),
    	# Choix Nb_LEDs
    	$form->Tr($form->td('Choix Nombre LEDs'),
     		$form->td($form->radio_group(
    		-name=>'NbLEDs',
    		-values=>['2 rangees','3 rangees'],
    		-default=>'NbRangees'))),
    	# Choix CouleurLEDs
    	$form->Tr($form->td('Choix Couleur des LEDs'),
    		$form->td($form->radio_group(
    		-name=>'CouleurLEDs',
    		-values=>['Ambre','Rouge'],
    		-default=>'Couleur'))),
    	$form->Tr(''),
    	# Choix alim
    	$form->Tr($form->td('Alimentation panneau'),
    		$form->td($form->popup_menu(
    		-name=>'Alimentation',
    		-values=>\@tab_alim))),
    #		-values=>['Secteur','Solaire','Eclairage public']))),
    	# Choix options
    	$form->Tr($form->td('Options :'),
    		$form->td($form->checkbox_group(
    			-name=>'ChoixOptions',
    #			-rowspan=>'5',
    			-values=>\@tab_options))),
    	# Choix caisson
    	$form->Tr($form->td('Taille du caisson'),
    		$form->td($form->popup_menu(
    		-name=>'Caisson',
    		-values=>['Taille caisson','Miniature','Petite','Moyenne','Grande']))),
    	# Choix CouleurLEDs
    	$form->Tr($form->td('Revetement du caisson'),
    		$form->td($form->radio_group(
    		-name=>'RevetementCaisson',
    		-values=>['Brut','Anodise','Peinture'],
    		-default=>'Revetement'))),
    	# Zone de commentaires
    	$form->Tr($form->td('Commentaires'),
    		$form->td($form->textarea(
    		-name=>'Commentaires',
    		-rows=>6,
    		-columns=>40))),
    	$form->Tr(''),
    	$form->end_table(),
     
    	# Valider requete
    	$form->center( $form->submit("Valider")),
    	# Fermeture des balises html du formulaire
    	$form->end_form(),
    	$form->br(),
    	$form->hr({-noshade => undef, -size=>1}),
    	$form->br(),
    	$form->p($form->br({-style => 'color:blue'}, "Auteur : ", $form->i($auteur))),
    	$form->end_html;					# Cloture du fichier HTML

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci !

    En fait, il fallait que gere mes droits pour ecrire!

    sudo chmod 755 /dir1/dir2/...../dirN/*

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

Discussions similaires

  1. Perl :: Fichier Excel Ouvert
    Par Renegad666 dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2011, 13h20
  2. [PERL ET EXCEL] problème de date
    Par henri93 dans le forum Langage
    Réponses: 0
    Dernier message: 13/09/2010, 11h38
  3. perl xml excel couleurs.
    Par blaise4714 dans le forum Modules
    Réponses: 0
    Dernier message: 20/12/2007, 15h04
  4. perl et excel
    Par blaise4714 dans le forum Langage
    Réponses: 4
    Dernier message: 14/08/2007, 16h35
  5. PERL et EXCEL (Ouverture d'Excel avec modification)
    Par localboy dans le forum Modules
    Réponses: 11
    Dernier message: 09/05/2006, 09h18

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