Salut
je veux savoir s'il y a un moyen de changer un fichier Excel en fichier text avec Perl.
Merci
Salut
je veux savoir s'il y a un moyen de changer un fichier Excel en fichier text avec Perl.
Merci
Hallu,
Pourquoi veux tu te compliquer la vie avec du perl.
Si tu sauvegardes ton fichier Excel en .csv manuellement , il sera lisible par un éditeur de texte standard.
de mémoire il me semble que c'est le module Spreadsheet:arseExcel qui le permet. L'inverse est possible avec WriteExcel.
Christophe T.
sinon, il faut voir avec win32::OLE que j'utilise pour convertir des fichiers txt en fichiers xls, il me semble que l'inverse est tout à fait faisable
Je travaille sur Linux Red Hat donc voilà. Sinon j'ai un peu chercher sur SpreadSheet:arserExcel et j'ai pas trouvé des choses claires çà m'a l'air bien compliqué.
voici un petit exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Merci Christophe pour le code. Je vais l'essayer!
Non çà ne marche pas !!! En fait il bloque la machine. je ne sais pas si çà vient du code ou d'autres choses.
c pas grave!!
Pour que le script fonctionne, il suffit de préciser à quel fichier correspond la variable $chemin_fichier_excel
Par exemple : my $chemin_fichier_excel='./in_file.xls';
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager