par
JVL » 08 nov. 2013, 11:07
Bonjour à tous,
Aujourd'hui je doit pouvoir sortir les données de mes requètes, en fichier ".csv" .
J'ai donc rechercher sur internet, et j'ai réussit à mettre en place une class Fichier excel.
j'ai bien positionner la fonction d'insertion dans la boucle de mes requètes, tout les données sont bien présente. Mais il y a des informations en trop, comme par exemple tout le tableau afficher avec les balises html.
Donc voila mon fichier excel généré. Je me demande comment tout ce code html attérit la.
<html>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="/glpi/css/calendrier2.css" /><!-- css du calendrier -->
" "
<TABLE border="3" class=CSSTableGenerator>
<tr>Synthese activite du service 1402 du 01/10/2013 au 08/11/2013 </tr>
" <tr><th>Projet</th><th>Tache</th><th>Duree cumulee</th><th>% total</th></tr>"
" "
<tr> <td>AGILETIME</td> <td>Projet</td> <td>03 H 30</td> <td>8.14 %</td></tr><tr> <td>ANESQUAL</td> <td>Projet</td> <td>05 H 15</td> <td>12.21 %</td></tr><tr> <td>ANTARES</td> <td>Courant</td> <td>03 H 00</td> <td>6.98 %</td></tr><tr> <td>APIX</td> <td>Courant</td> <td>03 H 30</td> <td>8.14 %</td></tr><tr> <td>BRANCARDAGE</td> <td>Projet</td> <td>01 H 00</td> <td>2.33 %</td></tr><tr> <td>CROSSWAY</td> <td>Projet</td> <td>01 H 00</td> <td>2.33 %</td></tr><tr> <td>DICT</td> <td>Courant</td> <td>01 H 45</td> <td>4.07 %</td></tr><tr> <td>G-STOCK</td> <td>Courant</td> <td>00 H 30</td> <td>1.16 %</td></tr><tr> <td>GLPI</td> <td>Projet</td> <td>23 H 30</td> <td>54.65 %</td></tr><tr><td></td><td></td><td>43 H 00</td></tr></TABLE><table border="3" class=CSSTableGenerator> <tr> <th> Categorie </th> <th>en % </th></tr><tr> <td>Courant</td> <td>55.23</td> </tr><tr> <td>Projet</td> <td>44.77</td> </tr></table></br>
// ci dessous la partie intéressante
Projet Tache Duree cumulee %
AGILETIME Projet 03 H 30 8.14
ANESQUAL Projet 05 H 15 12.21
ANTARES Courant 03 H 00 6.98
APIX Courant 03 H 30 8.14
BRANCARDAGE Projet 01 H 00 2.33
CROSSWAY Projet 01 H 00 2.33
DICT Courant 01 H 45 4.07
G-STOCK Courant 00 H 30 1.16
GLPI Projet 23 H 30 54.65
Categorie Duree cumulee %
Courant 55.23
Projet 44.77
<html>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="/glpi/css/calendrier2.css" /><!-- css du calendrier -->
<?php
include('FichierExcel.php');
require_once('../inc/connection.php');
if($_GET["yolo"] == '0'){
// j'enlève les requètes pour la lisibilité et quelque fonctions de conversion du temps.
?>
<TABLE border="3" class=CSSTableGenerator>
<?php echo '<tr>Synthese activite du service '.$_GET["service"].' du '.$_GET["date1"].' au '.$_GET["date2"].' </tr>'; ?>
<tr><th>Projet</th><th>Tache</th><th>Duree cumulee</th><th>% total</th></tr>
<?php
$total=0;
$fichier = new FichierExcel();
$fichier->Insertion(";;;");
$fichier->Insertion(";;;");
$fichier->Insertion(";;;");
$fichier->Insertion(";;;");
$fichier->Colonne("Projet;Tache;Duree cumulee;%");
while($row = $selectionr->fetch(PDO::FETCH_OBJ)){
$pour = ($row->duree/$totoduree)*100;
$pour = number_format($pour,2);
$total+=$row->duree;
echo'<tr> <td>'.$row->Projet_suivi.'</td> <td>'.$row->Categorie_suivi.'</td> <td>'.$resultat.'</td> <td>'.$pour.' %</td></tr>';
$fichier->Insertion("$row->Projet_suivi;$row->Categorie_suivi;$resultat;$pour");//ici on peut faire une boucle si nécessaire.
}
echo'<tr><td></td><td></td><td>'.$result.'</td></tr></TABLE>';
echo '<table border="3" class=CSSTableGenerator> <tr> <th> Categorie </th> <th>en % </th></tr>';
$fichier->Insertion(";");
$fichier->Colonne("Categorie;Duree cumulee;%");
while($raw = $selectiongraphe->fetch(PDO::FETCH_OBJ)){
$ratotal = ($raw->duree/$totoduree)*100;
$ratotal = number_format($ratotal,2);
echo "<tr> <td>$raw->Categorie_suivi</td> <td>$ratotal</td> </tr>";
$fichier->Insertion("$raw->Categorie_suivi;$ratotal");//ici on peut faire une boucle si nécessaire.
}
echo "</table></br>";
$fichier->output();
}
Et voici la fonction FichierExcel
<?php
class FichierExcel {
public
$csv = Null;
/**
* Cette ligne permet de créer les colonnes du fichers Excel
* Cette fonction est totalement faculative, on peut faire la même chose avec la
* fonction insertion, c'est juste une clarté pour moi
*/
function Colonne($file) {
$this->csv.=$file."\n";
return $this->csv;
}
/**
* Insertion des lignes dans le fichiers Excel, il faut introduire les données sous formes de chaines
* de caractère.
* Attention a séparer avec une virgule.
*/
function Insertion($file){
$this->csv.=$file."\n";
return $this->csv;
}
/**
* fonction de sortie du fichier avec un nom spécifique.
*
*/
function output() {
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=graphe.csv");
print $this->csv;
exit;
}
}
?>
Merci d'avance.