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 :
- sub lirePos
- {
- # Nom du fichier xls
- my $nom_fichier = @_;
- # Création d'une Hashtable pour stocker les positions des gènes
- my %gene_Pos = ();
- my $oExcel = new Spreadsheet::ParseExcel;
- if (defined(my $classeur = $oExcel->Parse($nom_fichier))) {
- #classeur qui peut être composé de +sieurs feuilles
- my($noLigne, $noCol, $hdlFeuille, $colMin , $hdlCelluleGene, $hdlCellulePos);
-
- #on ne traite que la 1ère feuille:
- $hdlFeuille = $classeur->{Worksheet}[0];
- $colMin = $hdlFeuille->{MinCol};
- for(my $noLigne = $hdlFeuille->{MinRow}+1 ; defined $hdlFeuille->{MaxRow} && $noLigne <= $hdlFeuille->{MaxRow} ; $noLigne++) {
-
- $hdlCelluleGene = $hdlFeuille->{Cells}[$noLigne][$colMin];
- $hdlCellulePos = $hdlFeuille->{Cells}[$noLigne][$colMin+1];
- if($hdlCelluleGene && $hdlCellulePos) {
- # Remplissage de la Hashtable
- $gene_Pos{$hdlCelluleGene} = $hdlCellulePos;
- }
- else {
- print "Erreur : ligne mal formée !" ;
- }
-
- }# End of for
-
- } # End of if
- return %gene_Pos;
- }
|
Si quelqu'un a une idée ?