1704 au lieu de +00001704 dans un excel
bonjour, j'ai repris un code donné ici dans les Snippets perl par Djibril, le voici :
Code:
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