Voila mon pb j'ai un fichier excel qui se présente sous cette forem:
|52345|To121234a123 stg123425GDF To546624b2546 ...|
|23654|...
Mon but est de prendre chaque ligne et de les mettre dans un nouveau classeur sous cette forme:
|52345|To121234|a1|23|
|52345|To546662|b2|546|
|23654|...
Comme vous le voyez je ne doit pas prendre les stg, j'ai un bou de code qui me met dans un fichier texte les infos mais il me manque l'id (52345) qui est quand même très importante et la séparation du a et du b.
voila mon code:
Code :
- # !usr/perl/bin/
- # Modules nécessaires
- use strict;
- use Spreadsheet::WriteExcel;
- use warnings;
- use Win32::OLE qw(in with);
- use CGI::Carp qw(fatalsToBrowser);
- use Win32::OLE::Const 'Microsoft Excel';
- $Win32::OLE::Warn = 3;
- # Type de contenu pour le navigateur
- print "Content-Type: text/html; charset=utf-8\n\n";
- # Création d'une nouvelle instance du package pour Excel
- my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
- # Ouverture du fichier Excel "C:\\stat.xls"
- my $Book = $Excel->Workbooks->Open("C:\\Documents and Settings\\Mes documents\\sandra\\test.xls" );
- # Affectation du 1er classeur à la variable $Sheet
- my $Sheet = $Book->Worksheets(1);
- # Récupération des valeurs de toutes les cellules comprises entre B2 et B10
- my $array = $Sheet->Range("B2:B10" )->{'Value'}; # get the contents
- # Récupération des valeurs de toutes les cellules comprises entre A2 et A10
- my $array2 = $Sheet->Range("A2:A10" )->{'Value'}; # get the contents
- my $Sheet2 = $Book->Worksheets(2);
- $Book->Close;
- # Affichage de ces valeurs
- foreach my $ref_array (@$array) {
- # Parcours de chaque ligne
- my $j=0;
- foreach my $scalar (@$ref_array) {
- # Parcours
- my $fichier= "C:\\Documents and Settings\\Mes documents\\sandra\\test.txt";
- open F, ">>$fichier"; # ouverture en ajout dans un fichier existant
- print F "--------------------------------------------------------\n";
- close F;
- print "--------------------------------------------------------";
- foreach my $word ( split(' ',$scalar) ) {
- if ($word =~ /STG|AP/) { # commence par S ou par A
- print "Alors on continue\n";
- }
- else{
- if($word =~ /^-/){
- $word=substr($word, 1);
- }
- #my $indic = index ()
- #my @indic_etat=( split('A',$word) );
- #print "@indic_etat\n";
- #print @$array2[2];
- #my $ajout = "$array ";
- #$word = $ajout . $word;
- print "$word\n";
- #my $row=2;my $col=2;
- #$Sheet2->write($row, $col, "Hi Excel!" );
- my $fichier= "C:\\Documents and Settings\\Mes documents\\sandra\\test.txt";
- open F, ">>$fichier"; # ouverture en ajout dans un fichier existant
- print F "$word\n"; # écriture de $chaine dans le fichier
- }
- }
- $j++;
- }
- }
- close F;
- print "Open Perl IDE Test finished.\n";
|
Je me sert d'un code existant pour ouvrir les fichier excel merci d'avoir pris le temps de lire
Si quelqu'un veut savoir comment qu'il me demande
Message édité par Lanfeust42 le 02-06-2006 à 15:58:18