Code :
#!/usr/bin/perl -w use warnings; use strict; use MIME::Lite; use Net::Ping; use File::Copy; use File::Find; use Encode; use Carp; use Spreadsheet::WriteExcel; #module pour creer des fichiers excel # email my $To = 'toto@numericable.fr'; my $From = 'toto@gmail.com'; my $Cc = ''; my $Bcc = ''; my $Subject = "TEST"; my $DIR="/home/Toto/"; my $separateur; #le separateur my $fichier_a_transformer = "TOP10_SEMAINE42.csv"; 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 un point vigule } # 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("TOP10_SEMAINE" ); my %font = ( font => 'Calibri', size => 11, color => 'black', bold => 0, ); my $gris = $workbook->set_custom_color(40, 216, 216, 216); my %shading = ( bg_color => $gris, pattern => 1, ); # Definition d'un format d'ecriture my $format = $workbook->add_format(%font); #creation du format $format->set_align('left'); #caracteres centres my $format2 = $workbook->add_format(%font, %shading); #creation du format $format2->set_align('left'); #caracteres centres $format2->set_bold(); #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 if ($ligne_excel == 0) { $worksheet->write($ligne_excel, $colonne_excel, $tab_ligne[$colonne_excel], $format2); } else { $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 } my $CSV_FILE2 = "TOP10_SEMAINE42.xls"; sub sub1{ #sleep 10; } sub1; system ("scp -P2000 $fichier_a_transformer toto\@localhost:/home/toto/" ); system ("scp -P2000 $CSV_FILE2 toto\@localhost:/home/toto/" ); email($To, $From, $Cc, $Bcc, $Subject); # email function sub email { # get incoming parameters my ($To, $From, $Cc, $Bcc, $Subject, $Message) = @_; # create a new message my $msg = MIME::Lite->new( From => $From, To => $To, Cc => $Cc, Bcc => $Bcc, Subject => $Subject, Data => $Subject ) or die "Error creating multipart container: $!\n"; $msg->attr("content-type" => "text/html; charset=iso-8859-1" ); # add the attachment $msg->attach( Type => "application/msexcel", Path => $DIR.$fichier_excel, Filename => $fichier_excel, Disposition => "attachment" ) or die "Error adding the text message part: $!\n"; # send the email MIME::Lite->send('smtp', 'smtp.numericable.com', HELLO=>'smtp.numericable.com', PORT=>'25', Debug => 0, Timeout => 60); $msg->send(); print "\n***** $Subject *****\n\n"; } __END__
|