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
|
use Spreadsheet::ParseExcel;
my $oExcel = new Spreadsheet::ParseExcel;
if (defined(my $classeur = $oExcel->Parse($chemin_fichier_excel))) { #classeur qui peut être composé de +sieurs feuilles
my($noLigne, $noCol, $hdlFeuille, $hdlCellule);
#on vérifie le nbre de feuilles
#un classeur pouvant contenir des feuilles vides (elles sont prises en compte par SheetCount), on ne va utiliser que la première feuille
open(FICHIER_TEXTE, "> mon_fichier.txt");
#on ne traite que la 1ère feuille:
#on va en faire un format txt avec un délimiteur et un séparateur
#on risque de trouver la "," ou le ";" dans un des champs: on ne peut pas les virer car ce peut être des champs à ne pas traiter
#donc je propose de mettre un délimiteur " et un séparateur ,
$hdlFeuille = $classeur->{Worksheet}[0];
for(my $noLigne = $hdlFeuille->{MinRow} ; defined $hdlFeuille->{MaxRow} && $noLigne <= $hdlFeuille->{MaxRow} ; $noLigne++) {
for(my $noCol = $hdlFeuille->{MinCol} ; defined $hdlFeuille->{MaxCol} && $noCol <= $hdlFeuille->{MaxCol} ; $noCol++) {
$hdlCellule = $hdlFeuille->{Cells}[$noLigne][$noCol];
if($hdlCellule) {
# la cellule pourrait contenir des retours à la ligne: on les remplace par un espace
my $contenu_cellule = $hdlCellule->Value;
$contenu_cellule =~ s/[\r\n]/ /g;
print FICHIER_TEXTE "\"", $contenu_cellule, "\";" ;
}
else {
print FICHIER_TEXTE "\"\";" ;
}
}
print FICHIER_TEXTE "\n";
}
close (FICHIER_TEXTE);
} |
Partager