IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Création d'un graphique en secteurs dans un fichier Excel traitant des données MySQL


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut Création d'un graphique en secteurs dans un fichier Excel traitant des données MySQL
    Bonjour à tous , dans le théme d'une interface de monitoring, je fais l'exportation d'une table mysql dans un fichier excel en PHP5 selon MVC,je dois creer un graphe en secteur traitant les donnés affichés dans mon fichier Excel , par exemple Nombre de cartes Electroniques OK et NON_Ok, et faut que ça soit dans le même fichier mais pas dans la même feuille , c'est à dire les données dans une feuille et le graphe dans une autre feuille
    ici c'est le code de la fonction générant mon fichier Excel , svp comment faire? avez vous des suggestion?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    function OutCSV() {	
     
    		header("Content-type: application/vnd.ms-excel");
    		header("Content-disposition: CSV" . date("Y-m-d") . ".csv");
    		header( "Content-disposition: filename=HDDs".date("Y-m-d_H-i-s",time()).".csv");  
    		$cnx = new Connection(); // on se connecte à la base de donnée grâce à data_fn.php
     
    		$table = 'disque'; /* Remplacez par le nom de votre table à exporter ! */
    		$file = 'export';
    		$result = $cnx->getDB()->query("SHOW COLUMNS FROM ".$table."");
    		$i = 0;
    		$csv_output = "";
    		if ($result->rowCount() > 0)
    		{
    		while ($row = $result->fetch(PDO::FETCH_ASSOC))
    		{
    		$csv_output .= $row['Field']."; ";
    		$i++;
    		}
    		} 
    		$csv_output .= "\n";
     
    		$values = $cnx->getDB()->query("SELECT * FROM ".$table."");
    		$rowrn = $values->fetchAll(PDO::FETCH_NUM);
     
    		foreach ($rowrn as $rowr)
    		{
    		for ($j=0;$j<$i;$j++)
    		{
    		$csv_output .= $rowr[$j]."; ";
    		}
    		$csv_output .= "\n";
    		}
    		$filename = $file."_".date("Y-m-d_H-i",time());
    		print($csv_output);
    		exit;
    	}

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu comptes utiliser quelle librairie pour générer le fichier Excel ?

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    et bah ça c'est le code de la fonction d'exportation,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    function OutCSV() {	
     
    		header("Content-type: application/vnd.ms-excel");
    		header("Content-disposition: CSV" . date("Y-m-d") . ".csv");
    		header( "Content-disposition: filename=HDDs".date("Y-m-d_H-i-s",time()).".csv");  
    		$cnx = new Connection(); // on se connecte à la base de donnée grâce à data_fn.php
     
    		$table = 'disque'; /* Remplacez par le nom de votre table à exporter ! */
    		$file = 'export';
    		$result = $cnx->getDB()->query("SHOW COLUMNS FROM ".$table."");
    		$i = 0;
    		$csv_output = "";
    		if ($result->rowCount() > 0)
    		{
    		while ($row = $result->fetch(PDO::FETCH_ASSOC))
    		{
    		$csv_output .= $row['Field']."; ";
    		$i++;
    		}
    		} 
    		$csv_output .= "\n";
    		$values = $cnx->getDB()->query("SELECT * FROM ".$table."");
    		$rowrn = $values->fetchAll(PDO::FETCH_NUM);
    		foreach ($rowrn as $rowr)
    		{
    		for ($j=0;$j<$i;$j++)
    		{
    		$csv_output .= $rowr[$j]."; ";
    		}
    		$csv_output .= "\n";
    		}
    		$filename = $file."_".date("Y-m-d_H-i",time());
    		print($csv_output);
    		exit;
    	}
    j'ai une table contenant plusieurs champs , parmi, y'a W_F_S de type binaire ..je dois créer un graphe de telle façon il calcule le npmbre des 0 et le nombre des 1

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce que tu fais actuellement est un fichier CSV pas un fichier Excel.
    Tu as PHPExcel pour créer des fichiers Excel avec des graphiques.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    et bah oui je me suis trompée ..pas grave générer un excel ou un csv, l'essentiel j'obtient mon affichage juste! maintenant je suis bloquée au point du graphe ! faut que j'affiche un graphe en secteurs dans une autre feuille dans ce même fichier généré.avez vous d'exemples?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as fais des recherches avec PHPExcel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    en faite mon fichier il a d'extension csv, mais je l'ouvre normal dans un fichier excel , oui j'ai fait plusieurs recherches , j'ai fait plusieurs tests mais pas encore un graphique sur mon fichier ! faut que quelqu'un voit de prés

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Un fichier CSV est un fichier texte avec des délimiteurs séparant les données. MS Excel sait repérer les délimiteurs en question et ouvrir le fichier en mettant chaque donnée dans une colonne, ce qui donne l'impression d'avoir un tableur.

    Mais un CSV n'est pas un tableur Excel, c'est un fichier texte. Autrement dit, il ne peut contenir que du texte : une seule "feuille", pas de mise en forme, pas de formule et pas de graphique.

    Si tu veux un graphique, il faut que tu génères un fichier au format Excel, ou que tu génères ton graphique sous forme d'image à l'aide d'une librairie graphique.

    @Sabotage : PHPExcel supporte les graphiques ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    oui j'ai réussi à avoir mon fichier excel avec son graphe ! cependant y'a un probléme dans l'affichage des légendes , il affiche le graphe pie graph sans légendes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     function OutCSV() {
    	error_reporting(E_ALL);
    	ini_set('display_errors', TRUE);
    	ini_set('display_startup_errors', TRUE);
    	require_once ROOT.'lib/PHPExcel.php';
    		$cnx = new Connection();
     
    		$table = 'disque';
    		$result = $cnx->getDB()->query("SHOW COLUMNS FROM ".$table."");
    		$data = array();
    		$i = 0;
    		if ($result->rowCount() > 0){
    			while ($row = $result->fetch(PDO::FETCH_ASSOC)){
    			array_push($data, $row['Field']);
    			$i++;
    			}
    		} 
    		$values = $cnx->getDB()->query("SELECT * FROM ".$table."");
    		$rowrn = $values->fetchAll(PDO::FETCH_NUM);
    		array_unshift($rowrn, $data);
    		$style['red_text']=new PHPExcelstyle()
    		$objPHPExcel = new PHPExcel();
    		$objWorksheet = $objPHPExcel->getActiveSheet();
    		$objWorksheet->fromArray($rowrn);
    		$GrapheWorkSheet = new PHPExcel_Worksheet($objPHPExcel, 'Graphe');
    		$objPHPExcel->addSheet($GrapheWorkSheet, 1);
    		$values = $cnx->getDB()->query("SELECT COUNT(SN) as total FROM ".$table."");
    		$total = $values->fetch();
    		$values = $cnx->getDB()->query("SELECT COUNT(SN) as success FROM ".$table." WHERE W_F_S = 0");
    		$success = $values->fetch();
    		$values = $cnx->getDB()->query("SELECT COUNT(SN) as faild FROM ".$table." WHERE W_F_S = 1");
    		$faild = $values->fetch();
    		$f = ($faild['faild']/$total['total'])*100 ;
    		$s = ($success['success']/$total['total'])*100;
    	$GrapheWorkSheet->fromArray(array(
     
    		array('Total',   $total['total']),
    		array('Failed', $f),
    		array('Success', $s  ),
    	));
    	$categories = array(
    		new PHPExcel_Chart_DataSeriesValues('String', 'Graphe!$A$2:$A$3', null, 2)
    	);
    	$values = array(
    		new PHPExcel_Chart_DataSeriesValues('Number', 'Graphe!$B$2:$B$3', null, 2)
    	);
    	$series = new PHPExcel_Chart_DataSeries(
    		PHPExcel_Chart_DataSeries::TYPE_PIECHART,       // plotType
    		PHPExcel_Chart_DataSeries::GROUPING_STANDARD,  // plotGrouping
    		array(0),                                    	// plotOrder
    		null,                                        // plotLabel
    		$categories,                                    // plotCategory
    		$values                                         // plotValues
    	);
    	$layout1 = new PHPExcel_Chart_Layout();
    	$layout1->setShowPercent(TRUE);
    	$title = new PHPExcel_Chart_Title('HDD SUCCESS FAILD');
    	$plotarea = new PHPExcel_Chart_PlotArea($layout1, array($series));
    	$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_LEFT, NULL, false);
    	$chart = new PHPExcel_Chart(
    		'chart1',                                       // name
    		$title,                                         // title
    		$legend,                                        // legend
    		$plotarea,                                      // plotArea
    		true,                                           // plotVisibleOnly
    		0,                                              // displayBlanksAs
    		null,                                           // xAxisLabel
    		null                                            // yAxisLabel
    	);
    	$chart->setTopLeftPosition('A7');
    	$chart->setBottomRightPosition('H20');
    	$GrapheWorkSheet->addChart($chart);
    	$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    	$writer->setIncludeCharts(TRUE);
    	$writer->save("Historique/DisquesHistory ".date("Y-m-d_H-i",time()).".xlsx");
      }

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2011, 01h40
  2. création page html en base ou dans un fichier ?
    Par p_m_g dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 04/03/2011, 21h47
  3. Réponses: 4
    Dernier message: 03/03/2010, 23h20
  4. Réponses: 1
    Dernier message: 08/10/2008, 16h30
  5. Réponses: 0
    Dernier message: 10/09/2008, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo