#!/usr/bin/perl -w # Classes utiles use DBI; use Spreadsheet::WriteExcel; # Récupération de la requête passée en paramètre my ($requete,$chem_fic)=@ARGV; # Initialisation des variables $database="nombase"; $host="localhost"; $user="nomuser"; $password="motdepasseuser"; # Create a new Excel workbook my $workbook = Spreadsheet::WriteExcel->new($chem_fic); # Add a worksheet $worksheet = $workbook->add_worksheet(); # Add and define a format $format_titre = $workbook->add_format(); # Add a format $format_titre->set_bold(); $format_titre->set_color('red'); $format_titre->set_align('center'); # Connexion à la base de données JDB $dsn = "DBI:mysql:database=$database;host=$host"; $dbh = DBI->connect($dsn, $user, $password); # Exécution de la requête $sth = $dbh->prepare($requete); $sth->execute; # Ecriture du titre my $nom_champs = $sth->{'NAME'}; my $nb_champs = $sth->{'NUM_OF_FIELDS'}; for (my $i = 0; $i <= $nb_champs-1; $i++) { $worksheet->write(0 ,$i, $$nom_champs[$i], $format_titre); } # Définition d'un compteur $compteur=1; # Parcours des résultats while (my $ref = $sth->fetchrow_hashref()) { for (my $i = 0; $i <= $nb_champs-1; $i++) { $worksheet->write($compteur,$i,$ref->{$$nom_champs[$i]}); } $compteur++; } # Déconnexion de la base de données $dbh->disconnect(); #Ferme le fichier Excel $workbook->close();