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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| <?php
session_start();
define("FILENAME","D:\mgftftftfftftp\httftftftftfpdocs\essaiexcel.xls"); //constante: nom du fichier à générer
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="fr" />
<?php
mysql_connect("localftfthost","rooftftt","");
mysql_select_db('mgdftgp');
?>
<?php
$_SESSION['req']='SELECT DATE_APPEL,NOM_CLIENT,XID_CLIENT FROM APPELS_CLIENTS INNER JOIN CLIENTS ON ID_CLIENT=XID_CLIENT ORDER BY XID_CLIENT,DATE_APPEL';
$_SESSION['req']="SELECT c.contact, c.id as XID_CLIENT, c.adresse, c.code_postal, c.ville, s.publicitaire, s.vip, s.voeux, s.type_evenement, s.invitation, s.nbparticipant FROM clients
c inner JOIN service s ON c.id=s.id_user where 1 AND s.date_relance_service='' AND c.date_relance='' ";
$requy=$_SESSION['req'];
$resultat_sql=mysql_query($requy)or die(mysql_error());
if(file_exists(FILENAME))
unlink(FILENAME); //Suppression du fichier
$excel=new COM("Excel.application"); //Instanciation de l'objet COM
$excel->sheetsinnewworkbook=1;//1 seule feuille de calcul dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active
$sheet->Name="Rapport appel des clients";//Attribution d'un nom à la feuille
$j=64;//C'est ici qu'on va jouer sur les codes ascii
$jj=64;
$client_prec=0;
$nombre_ligne=0;
while($row=mysql_fetch_object($resultat_sql)){//Parcours du résultat de la requête
if($client_prec != $row->XID_CLIENT){//Rupture sur le numéro de client
$j++;
$i=3;
if($nombre_ligne>0){
$lignes[]=$nombre_ligne;//le tableau $lignes contiendra le nbre d'appels par client
$nombre_ligne=0;
}
//Ce bloc if vérifie si il s'agit d'une colonne de type "A" "B" ou "AA" "AB"...
if($jj==64){
$cell=$sheet->Range(chr($j).'1');//chr, renvoie la lettre correspondant au code ASCII
}
else{
$cell=$sheet->Range(chr($jj).chr($j).'1');//ligne 51
}
$cell->value=$row->contact;//Attribution d'une valeur à la cellule
$cell->HorizontalAlignment=-4108;//On centre le texte
$cell->Font->ColorIndex = 41;//Coloration
}
$nombre_ligne++;//$nombre_ligne sert à calculer le nbre d'appels par client
if($jj==64){
$cell=$sheet->Range(chr($j).$i);
}
else{
$cell=$sheet->Range(chr($jj).chr($j).$i); }
//Si $j représentant la colonne simple = "Z", alors incrémenter $jj qui représente la 2ème colonne
if(chr($j)=='Z'){
$jj++;
$j=64;
}
$cell->value=$row->ville;//Attribution de la date et de l'heure à la cellule
/* Notez que selon vos paramètres régionnaux et la configuration d'Excel, vous devez peut-être
utiliser un format de cellule comme ceci: dd/mm/yyyy hh:mm:ss (anglais)*/
$client_prec=$row->XID_CLIENT;//gestion de la rupture sur le numéro de client
$i++;
}
$lignes[]=$nombre_ligne;//ajout des appels du dernier client dans $lignes
$sorted=$lignes; //on copie le nombre d'enreg par client dans un autre tableau
sort($sorted); //on trie cet autre tableau
//on récupère le plus grand nombre de record, pour pouvoir aligner les résultats dans Excel
$max_val=5+$sorted[count($sorted)-1];
$colonne=65;
$colonne2=64;
//Boucle allant afficher le nombre total d'appels par client
for($i=0;$i<count($lignes);$i++){
if($colonne2>64){
$cell=$sheet->Range(chr($colonne2).chr($colonne).$max_val);
}
else{
$cell=$sheet->Range(chr($colonne).$max_val);
}
if(chr($colonne)=='Z'){
$colonne2++;
$colonne=64;
}
$cell->value="Total: ".$lignes[$i];
$cell->HorizontalAlignment=-4108;
$cell->Font->ColorIndex=3;
$colonne++;
}
$book->saveas(FILENAME);//Sauvegarde du fichier
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'instance $excel |
Partager