Longueur dynamique d'un fichier xls. en perl
Résolu/Fermé
VivoBaggio
Messages postés
140
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2009
-
8 oct. 2007 à 13:57
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 9 oct. 2007 à 17:24
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 9 oct. 2007 à 17:24
A voir également:
- Longueur dynamique d'un fichier xls. en perl
- Tableau croisé dynamique - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier host - Guide
6 réponses
VivoBaggio
Messages postés
140
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2009
9 oct. 2007 à 10:17
9 oct. 2007 à 10:17
Allez, svp de l'aide. Merci
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 569
9 oct. 2007 à 14:03
9 oct. 2007 à 14:03
Salut,
Allez, svp de l'aide. Merci
Encore toi?!!! ;-))
Je vais jeter un coup d'oeil :-)
Allez, svp de l'aide. Merci
Encore toi?!!! ;-))
Je vais jeter un coup d'oeil :-)
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 569
9 oct. 2007 à 14:09
9 oct. 2007 à 14:09
tu peux faire comme ça
Donc si la cellule de la colone 1 est vide le rang est sauté
Ca te conviens comme ça?
#!/usr/bin/perl use strict;use warnings; use Spreadsheet::ParseExcel; open F,">>resultat.csv" or die "E/S : $!\n"; #my $file = "keo4cUWzZ8_Test.xls"; my $file = "kflrssGMyz_Test.xls"; #my $file = "Test.xls"; my $excel = Spreadsheet::ParseExcel::Workbook->Parse($file); my $sheet = ${$excel->{Worksheet}}[0]; foreach my $row (0 ... 65535){ next unless my $cell1 = $sheet->{Cells}[$row][0]; my $cell2 = $sheet->{Cells}[$row][1]; my $cell3 = $sheet->{Cells}[$row][2]; my $cell4 = $sheet->{Cells}[$row][3]; $cell4->{Val} =~s/[()]//g; $cell4->{Val} =~s/\D//g; $cell4->{Val} =~s/(?<=\d)(?=\d)/,/g; # my $cell5 = $sheet->{Cells}[$row][4]; # my $res = "$cell1->{Val};$cell2->{Val};$cell3->{Val};$cell4->{Val};$cell5->{Val};"; my $res = "$cell1->{Val};$cell2->{Val};$cell3->{Val};$cell4->{Val};"; $res =~s/\n//; $res =~s/\x01\x53/oe/g; $res =~s/\x00//g; print "$res\n"; } __END__
Donc si la cellule de la colone 1 est vide le rang est sauté
Ca te conviens comme ça?
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 569
9 oct. 2007 à 15:23
9 oct. 2007 à 15:23
ou
#!/usr/bin/perl use strict;use warnings; use Spreadsheet::ParseExcel; my $nbligne; open F,">>resultat.csv" or die "E/S : $!\n"; my $file = "kflrssGMyz_Test.xls"; my $excel = Spreadsheet::ParseExcel::Workbook->Parse($file); my $sheet = ${$excel->{Worksheet}}[0]; foreach my $row (0 ... eof){ $nbligne++ if my $cell1 = $sheet->{Cells}[$row][0]; } foreach my $row (0 ... $nbligne){ my $cell1 = $sheet->{Cells}[$row][0]; my $cell2 = $sheet->{Cells}[$row][1]; my $cell3 = $sheet->{Cells}[$row][2]; my $cell4 = $sheet->{Cells}[$row][3]; $cell4->{Val} =~s/[()]//g; $cell4->{Val} =~s/\D//g; $cell4->{Val} =~s/(?<=\d)(?=\d)/,/g; # my $cell5 = $sheet->{Cells}[$row][4]; # my $res = "$cell1->{Val};$cell2->{Val};$cell3->{Val};$cell4->{Val};$cell5->{Val};"; my $res = "$cell1->{Val};$cell2->{Val};$cell3->{Val};$cell4->{Val};"; $res =~s/\n//; $res =~s/\x01\x53/oe/g; $res =~s/\x00//g; print "$res\n"; } __END__
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
VivoBaggio
Messages postés
140
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2009
9 oct. 2007 à 17:07
9 oct. 2007 à 17:07
Ouais encore moi, lol.
J'ai pris ta solution 2 qui marche presque. A la place de eof dans ta boucle, j'ai rentré 65535, sinon il ne m'écrivait que les 2 premières lignes dans le csv.
Bon ben encore merci de ton aide. La prochaine fois, je te joins directement. Lol.
J'ai pris ta solution 2 qui marche presque. A la place de eof dans ta boucle, j'ai rentré 65535, sinon il ne m'écrivait que les 2 premières lignes dans le csv.
Bon ben encore merci de ton aide. La prochaine fois, je te joins directement. Lol.
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 569
9 oct. 2007 à 17:24
9 oct. 2007 à 17:24
je te joins directement. Lol
tu peux toujours demander ici, ainsi la communauté peut profiter de la solution ;-))
tu peux toujours demander ici, ainsi la communauté peut profiter de la solution ;-))