IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

1704 au lieu de +00001704 dans un excel


Sujet :

Modules Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Points : 21
    Points
    21
    Par défaut 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 : 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

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Points : 21
    Points
    21
    Par défaut réponse
    En fait le problème venait du format du fichier texte, le séparateur décimal était une virgule et non le "." utilisé par excel, il a suffit de remplacer la"," par un point.

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Euro au lieu de dollar dans Excel
    Par charlie105 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/12/2006, 15h48
  2. objet names dans ActiveWorkbook EXCEL
    Par jarod_bx dans le forum Access
    Réponses: 4
    Dernier message: 06/01/2006, 12h26
  3. [vb excel] différences bizarre dans macro excel
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2005, 12h44
  4. Création liste dans cellules Excel en VBA
    Par yazoo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/04/2005, 14h46
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo