Consultation et téléchargement web

Consultation et téléchargement web - Perl - Programmation

Marsh Posté le 21-04-2004 à 15:35:13    

J'ai un fichier xls dont les données sont rangées en 2 colonnes :
chaîne à gauche et entier à droite.
J'utilise le module Spreadsheet::ParseExcel pour lire ce type de fichiers.
Je souhaite stocker mes données dans une table associative avec comme clés  les chaînes de la colonnne de gauche mais ça ne marche pas !
J'ai donc crée une fonction qui prend pour argument le nom du fichier xls et renvoie la table de hash :
 

Code :
  1. sub lirePos
  2.   {
  3.    # Nom du fichier xls
  4.    my $nom_fichier = @_;
  5.    # Création d'une Hashtable pour stocker les positions des gènes
  6.    my %gene_Pos = ();
  7.    my $oExcel = new Spreadsheet::ParseExcel;
  8.    if (defined(my $classeur = $oExcel->Parse($nom_fichier)))   {
  9.    #classeur qui peut être composé de +sieurs feuilles
  10.    my($noLigne, $noCol, $hdlFeuille, $colMin , $hdlCelluleGene, $hdlCellulePos);
  11.  
  12.    #on ne traite que la 1ère feuille:
  13.    $hdlFeuille = $classeur->{Worksheet}[0];
  14.    $colMin = $hdlFeuille->{MinCol};
  15.       for(my $noLigne = $hdlFeuille->{MinRow}+1 ;   defined $hdlFeuille->{MaxRow} && $noLigne <= $hdlFeuille->{MaxRow} ; $noLigne++) {
  16.  
  17.          $hdlCelluleGene = $hdlFeuille->{Cells}[$noLigne][$colMin];
  18.  $hdlCellulePos = $hdlFeuille->{Cells}[$noLigne][$colMin+1];
  19.          if($hdlCelluleGene && $hdlCellulePos)   {
  20.             # Remplissage de la Hashtable
  21.     $gene_Pos{$hdlCelluleGene} = $hdlCellulePos;
  22.          }
  23.          else   {
  24.             print  "Erreur : ligne mal formée !" ;
  25.          }
  26.      
  27.        }# End of for
  28.  
  29.    } # End of if
  30.    return %gene_Pos;
  31.   }


Si quelqu'un a une idée ?  :wahoo:  

Reply

Marsh Posté le 21-04-2004 à 15:35:13   

Reply

Marsh Posté le 21-04-2004 à 15:38:03    

désolé, il y a eu une erreur avec le titre; ça devait être "fichier xls + Hashtable"

Reply

Marsh Posté le 23-04-2004 à 14:53:28    

tu peux éditer le titre :
http://forum.hardware.fr/icones/edit.gif

Reply

Marsh Posté le 24-04-2004 à 22:22:54    

difficile de tester ta sub sans les données mais c'est peu etre cette erreur qui te bloque:
 
"my $nom_fichier = @_; "
 
la tu va recuperer dans my $nom_fichier le nombre d'arguments passés...
 
donc il te faut faire:
my ($nom_fichier) = @_;  
ou:
my $nom_fichier = shift;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed