Bonjour,

Voila mon problème.
Je désire créer des fichiers excel via Active perl en utilisant win32 OLE
Cela marche très bien et c'est très rapide, mais lors du formatage cela "galère"

N'y a t'il pas moyen de "préparer" les formats dans un tableau et de les injecter en une fois ( comme pour les données ) au lieu de passer cell par cell

Par exemple, ce code crée un excel et remplis une matrice de 5 X 5 avec des valeurs allant de 11 à 55

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
use strict;
use Text::ParseWords;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3;    
 
my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
    || Win32::OLE->new('Excel.Application', 'Quit');  
$Excel->{Visible} = 1;
 
my $Book = $Excel->Workbooks->Add;
my $Sheet = $Book->Worksheets(1);
 
my $range;
my @excel=();
 
for my $i (1..5){
   my @clean_data=();
   my @clean_color=();
   for my $j (1..5){
      $clean_data[$j]=$i*10+$j;      
   }
    my $a=shift(@clean_data);
    push @excel,\@clean_data;
}
 
$range = $Sheet->Range('A1:E5');
$range->{Value} = \@excel;
$range-> {Interior} -> {ColorIndex} = \@excel;
 
my $Filename = 'c:\documents\test02.xls';
unlink $Filename if -f $Filename;
$Book->SaveAs($Filename);
$Book->Close;
grâce à cette ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$range->{Value} = \@excel;
c'est injecté en une fois dans excel

j'aimerai faire le même pour les couleurs, mais ici je n'ai qu'une seule couleur avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$range-> {Interior} -> {ColorIndex} = \@excel;
Là je dois dire que je cale un peu

Toutes idées ou conseils sont les bienvenus

Merci d'avance

Ztor1