bonjour, j'ai repris un code donné ici dans les Snippets perl par Djibril, le voici :
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);
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 ?

un grand merci