[PERL] lire contenu fichier .xls

Résolu/Fermé
ushiwa.sasuke - 6 mai 2005 à 14:45
 orpheopolis - 16 juin 2008 à 11:51
bonjour,

voila je commence a apprendre le language PERL et j'aimerais savoir si il existe une commande ou un moyen de pourvoir lire le contenu d un fichier .xls et de le stocker dans une base de données ORACLE ???

Si oui quelles seraient les commandes...?

Merci d avance

15 réponses

Utilisateur anonyme
17 mai 2005 à 12:41
Bonjour,

Remarque:
#!C:\Perl\lib\perl.exe
Inutile sous MS-WINDOWS

Pour charger un fichier:

#!/usr/bin/perl -w
use strict;
# --- Retourne le contenu du fichier dont le chemin est passé en paramètre
sub lecture {
    my @contenu = ();
    open(FILE, "$_[0]") || die "Erreur E/S: $!\n";
    @contenu = <FILE>;
    close(FILE);
    return @contenu;
}


Pour utiliser les formats d'excel:
http://search.cpan.org/~kwitknr/DBD-Excel-0.06/Excel.pm

@+
1
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
17 mai 2005 à 13:50
Je sus pas sur que sous windows,
#C:\Perl\bin\perl.exe
soit inutile, sans cela je ne peux pas le faire chez moi.
0
Utilisateur anonyme > kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013

17 mai 2005 à 17:06
il faut lier les fichiers d'extension .pl et .pm avec l'exécutable perl

@+
0
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856 > kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013

17 mai 2005 à 17:23
ah.. ok

0
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
9 mai 2005 à 22:43
Alors sasuke on ne sais pas ? Fais moi le malin hein quand ta pas ton chacras...

bon, plus sérieusement essaye un truc dans le style (moi aussi je débute en Perl alors c'est possible que ce soit pas tout à fait ca !) :
sub lecture {
    open IN, $_[0] or die "Impossible d'ouvrir le fichier $_[0] pour la cause suivante : $!\n";
    my $infos_fichier = "";
    while( $infos_fichier .= <IN> ) {
        ;
    }
    close IN;
    return $infos_fichier;
} 

Cette fonction s'appelle de la sorte : calcule("nomdufichier_avec_chemin");

Et puis apres tu fais une méthode qui ouvre une connexion à une base de donnée, tu crée ta requete et l'éxécute sur cette connexion, puis tu ferme la connexion.

Si tu ne sais pas faire les connexion, dit le et je pourrais t'aiguiller.

++
0
ushiwa.sasuke
11 mai 2005 à 08:39
merci bcp kij_82 je vais tester et je te tiens au courant

sinon oui sans chacra je sais pas faire grand chose mdr mais mon sharingan n a rien pu faire...snif
0
ushiwa.sasuke
13 mai 2005 à 14:23
bon j ai tester plus ou moin le truc mais pour commencer avant de deja y sauver dans une base de données j ai essayé d y enregistrer dans un fichier .txt le truc c que il fait la les procedure mais il crée pas le fichier .txt donc je suis tjs dessus pour savoir pkoi...
0
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
17 mai 2005 à 11:59
Oui en effet, j'ai tester ce que j'ai mis et il ne s'arrete pas
Faut juste mettre une condition d'arret.
0
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
17 mai 2005 à 12:09
essaie ce script et utilise le à tes fin :
#!C:\Perl\lib\perl.exe

lecture("fich.txt");

sub lecture {
    open IN, $_[0] or die "Impossible d'ouvrir le fichier $_[0] pour la cause suivante : $!\n";
    my @infos_fichier;
    @infos_fichier = <IN>;
    my $i = 0;
    my $long = @infos_fichier;
    printf $long."\n";
    while( $i < $long ){
        print $infos_fichier[$i++]."\n";
    }
    
    close IN;
    return $infos_fichier;
} 



++
0
sam3000
Messages postés
1225
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
13 juin 2005
144
13 mai 2005 à 14:28
slt KIJ_82,
tu es sur que ton truc fonctionne (ça ne m'en a pas l'air)
0
ushiwa.sasuke
18 mai 2005 à 08:23
merci bcp pour vos reponse cela dis j ai encore un petit truc preciser c est que je suis en linux et non en windows...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
18 mai 2005 à 08:53
bonjour,

je suis en linux et non en windows...

C'est mieux pour le perl.

-> la première ligne du script:
#!/usr/bin/perl -w


Ensuite pour rendre le script exécutable:
chmod +x mon_script.pl

Pour exécuter le script:
./mon_script.pl

Bon amusement avec perl et linux.
Cordialement,

@+
0
ushiwa.sasuke
20 mai 2005 à 09:42
dites moi, un de vous arriverai a me corriger car je vois vraiment pas l erreur que j ai faite...

#!/usr/bin/perl

sub lecture {
open (IN, "essai.xls") or die "Impossible d'ouvrir le fichier /home/hassler/Desktop/essai.xls pour la cause suivante : $!\n";
my $infos_fichier = "";
while( $infos_fichier .= <IN> ) {
;
}
close IN;
return $infos_fichier;
}
sub ecriture {
my $infos_fichier = $_[0];
open (OUT,">ecriturexls.txt");
print OUT $infos_fichier;
close(OUT);
}
$infos_fichier = &lecture;

&ecriture($infos_fichier);
0
Utilisateur anonyme
20 mai 2005 à 10:11
Bonjour,

#!/usr/bin/perl -w
use strict;

sub lecture {
	my $fichier_in = "./essai.xls";
	open (IN, "$fichier_in") || die "Impossible d'ouvrir le fichier essai.xls pour la cause suivante : $!\n";
	my @infos_fichier = <IN>;
	close IN;
	return @infos_fichier;
}

sub ecriture {
	my $fichier_out = "./ecriturexls.txt";
	open (OUT,">$fichier_out");
	foreach my $valeur (@_) {
		print OUT $valeur;
	}
	close(OUT);
}

my @infos_fichier = &lecture;
&ecriture(@infos_fichier);


C'est ok commec ça?

@+
0
ushiwa.sasuke
23 mai 2005 à 09:05
merci bcp philtrain, cela fonctionne !

cela dit encore une petite question...dans je lance le script et qu il ecrit dans le fichier : ecriturexls.txt, il se trouve qu il y a ca "ÐÏࡱ" a la place des valeur de mes cellules...pkoi ? est ce le contenu de mon fichier essaixls.pl qui est cripter ou pas ?
0
Utilisateur anonyme
23 mai 2005 à 09:38
C'est du au format .xls.

Pour le travailler, il faut utiliser le bon module --> voir sur cpan
@+
0
alors je me suis renseigné et j ai un peu chercher dans le cpan et mais trouvé à aucun endroit ou il parlait du fichier xls....
0
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
25 mai 2005 à 09:01
0
Utilisateur anonyme > kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013

25 mai 2005 à 09:30
hello kij_82,

Attention, ushiwa a besoin de traiter des fichiers au format excel (xls) et non xsl

cordialement,

@+
0
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856 > Utilisateur anonyme
25 mai 2005 à 10:23
oups.. autant pour moi :)
0
Utilisateur anonyme
25 mai 2005 à 09:08
0
BAUDIN ALAIN
21 mars 2007 à 21:02
je ne peux pas ouvrir 2 fichiers indiqués XLS je n'ai pas excel .
est-ce que ça a un rapport ? MERCI
0
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
21 mars 2007 à 21:10
Salut,

pour lire c'est le module Spreadsheet::ParseExcel qu'il faut utiliser
0
comment lire le fichier xls?
et merci bcp
0
orpheopolis
16 juin 2008 à 11:51
bonjour, je travaille avec vista et office 2007, problème: j'ouvre un fichier excel, l'enregistre, il apparait dans document,
si je veux l'ouvrir, windows me répond qu'il ne trouve pas le document xlsx, que faire??
merci d'avance
0