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 65 66 67 68 69 70 71 72 73 74 75
| use strict;
use warnings;
use Spreadsheet::WriteExcel;
my @files = glob ("C:\\Log\\Trace*.log");
my $workbook = Spreadsheet::WriteExcel->new('C:\\Documents and Settings\\Fonctionnement.xls'); # Création du fichier excel
# Création des feuilles de calcul du workbook
my $worksheet = $workbook->add_worksheet('Parameters');
# Créer un format pour les rubriques
my $format = $workbook->add_format();
$format->set_bold();
my $offset_parameters = 0;
foreach my $file (@files)
{
open (my $FIC, "<", $file) or die "ouverture impossible de $file $! \n";
my $start_time_parameters = 0;
my $cpt_parameters_study = 0;
my $temps_parameters = 0;
my $temps_heures_parameters = 0;
while (my $ligne = <$FIC>) # Début de la boucle while --> Lire chaque ligne du fichier fh_log
{
# Workflow des paramètres pelviens
my $end_time_parameters; # Initialisation de la variable end_time_pelvic
my $ligne_ecart1 = ($ligne =~ /Parameters workflow/) .. ($ligne =~ /Parameters created/); # Initialisation de la variable $ligne_ecart1 (lorsque deux mots à reconnaître ne sont pas sur la même ligne)
if ($ligne =~ /Parameters workflow/) # Si "Pelvic parameters workflow" est écrit dans une ligne
{
$cpt_parameters_study++; # Incrémentation du compteur
my($heure, $minute, $seconde, $milliseconde)=$ligne =~ /(\d\d):(\d\d):(\d\d).(\d\d\d)/;
$start_time_parameters = (((($heure * 60)+ $minute) *60 + ($seconde+($milliseconde/1000)))/60); # Calculer la valeur de start_time_pelvic
}
if ($ligne_ecart1 =~ "E0") # Test de validation des conditions de $ligne_ecart1 (Les deux messages peuvent avoir plusieurs lignes d'écart)
{
my($heure, $minute, $seconde, $milliseconde)=$ligne =~ /(\d\d):(\d\d):(\d\d).(\d\d\d)/;
$end_time_parameters = (((($heure * 60)+ $minute) *60 + ($seconde+($milliseconde/1000)))/60); # Calculer la valeur de end_time_pelvic
}
if (defined $end_time_parameters && $start_time_parameters) # Si end_time_pelvic et start_temps_pelvic existe
{
$temps_parameters = ($end_time_parameters) - ($start_time_parameters) if defined $end_time_parameters; # Calculer la valeur de temps_pelvic
$temps_parameters = sprintf("%0.3f", $temps_parameters); # Arrondir la valeur de temps_pelvic avec 2 chiffres après la virgule
$temps_heures_parameters = $temps_parameters/60; # Calculer la valeur de temps_heures_pelvic
$temps_heures_parameters = sprintf("%0.3f", $temps_heures_parameters); # Arrondir la valeur de temps_heures_pelvic avec 2 chiffres après la virgule
my $row = 0; # ligne =0
$worksheet->write($offset_parameters+$row,0,"Fichier $file",$format);
# Ecriture dans la feuille excel
for($row = 3;$row<$cpt_parameters_study*4;$row+=3) # Boucle for pour écrire chaque étude
{
$worksheet->write($offset_parameters+$row,0,"Etude num\xE9ro $cpt_parameters_study des param\xE8tres",$format);
$worksheet->write($offset_parameters+$row+1,0,"Temps :",$format);
$worksheet->write($offset_parameters+$row+1,1,"$temps_parameters",$format);
$worksheet->write($offset_parameters+$row+1,2,"minutes",$format);
$worksheet->write($offset_parameters+$row+1,3,"---------->",$format);
$worksheet->write($offset_parameters+$row+1,4,"$temps_heures_parameters",$format);
$worksheet->write($offset_parameters+$row+1,5,"heures",$format);
} # Fin de la boucle for
$offset_parameters = $offset_parameters + ($cpt_parameters_study*5);
$row = $row + ($cpt_parameters_study*4);
}
}
close($FIC);
}
$workbook->close(); |
Partager