bonjour, j'ai repris un code donné ici dans les Snippets perl par Djibril, le voici :Il fonctionne bien mais j'ai un problème que je n'arrive pas à résoudre. Le point de départ est un fichier texte que je transforme en exel. Pour les colonnes numériques si j'ai par exemple 1704 dans le fichier texte, je me retrouve avec +00001704 dans mon fichier excel. A priori on peut faire des calculs et cela n'a pas d'incidence mais la personne qui est destinataire du fichier ne l'accepte pas tel quel, elle veut un affichage du type 1704 dans l'exel. J'ai parcouru la doc sur cpan.org du module Spreadsheet-WriteExcel-2.20 mais je n'ai rien trouvé de probant. Est ce qu'un esprit supérieur pourrait me sortir de cette ornière ?
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 #!/usr/bin/perl -w ####################################################################### #Ce script permet de transformer un fichier txt ou csv en fichier excel. # - Si c'est un fichier csv donner en argumant le fichier csv # Ex script.pl fichier.csv # # - Si c'est un fichier txt donner en argument le fichier txt et # preciser le separateur dans le script ligne 29 ou modifier la ligne 54 # Ex: script.pl fichier.txt ###################################################################### use strict; use Carp; use Spreadsheet::WriteExcel; #module pour creer des fichiers excel my $nbr_argument = @ARGV; #recupere le nombre fichiers entres en argument unless( $nbr_argument == 1) {print "trop de fichiers donnes en argument\n"; exit; } my $separateur; #le separateur my $fichier_a_transformer = $ARGV[0]; my $fichier_excel = $fichier_a_transformer; #si c'est un fichier csv if ($fichier_a_transformer =~ /\.csv$/i){ $fichier_excel =~ s/(.+)\.csv$/$1\.xls/gi; $separateur = ","; #le separateur est une virgule } else { #si c'est un fichier txt $fichier_excel =~ s/(.+)\.txt$/$1\.xls/gi; $separateur = ","; #le separateur est à préciser } # Creer une page excel ayant pour le même nom que le fichier txt my $workbook = Spreadsheet::WriteExcel->new($fichier_excel) || die "impossible de creer $fichier_excel ou fichier ouvert"; # nom de la feuille my $worksheet = $workbook->add_worksheet("feuille1"); # Definition d'un format d'ecriture my $format = $workbook->add_format(); #creation du format $format->set_bold(); #caractere en gras $format->set_align('center'); #caracteres centres # recuperer les donnees du fichier txt et mise dans le fichier excel my $colonne_excel = 0; my $ligne_excel = 0; my $ligne; my @tab_ligne; my $last_case; open (FILE, "$fichier_a_transformer") || die ("impossible de d'ouvrir $fichier_a_transformer $!"); while ($ligne = <FILE>) { chomp($ligne); #suppression des retour à la ligne @tab_ligne = split ($separateur, $ligne); $last_case = $#tab_ligne; #dernier index du tableau for ($colonne_excel = 0; $colonne_excel<= $last_case; $colonne_excel++) { #remplissage du fichier excel $worksheet->write($ligne_excel, $colonne_excel, $tab_ligne[$colonne_excel], $format); } $colonne_excel = 0; #reinitialise la colonne à 0 $ligne_excel++; #on passe a la ligne suivante dans le fichier excel } close (FILE);
un grand merci
Partager