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

Bibliothèques et frameworks PHP Discussion :

[PHPExcel] Modification d'un fichier avec graphique


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut [PHPExcel] Modification d'un fichier avec graphique
    Bonjour a tous,

    Je viens vers vous car je n'ai trouvé aucune solution à mon problème. Ayant cherché si la génération de graphique était pris en charge par l'api de PHPExcel je me suis vite rendu compte que non.

    Ma solution serait donc de modifier un fichier Excel qui contient déjà un graphique sur les colonnes souhaitées et que je modifie seulement la partie des données.

    Cependant lorsque je fais ceci, aucun graphique n'apparait, les données ont bien été modifiées.

    Est-ce qu'il faut définir une macro ou un truc du genre qui ferait directement la génération du graphique ?

    Merci d'avance

    Louis

  2. #2
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Incroyable, exactement sur le même problème que je rencontre

    Est-ce que quelqu'un peu expliquer le comportement suivant?

    Comme allserv, j'utilise un template Excel (Un graph vide avec 2 colonnes de dispo pour y renseigner les données).
    J'appel ce template avec PHPExcel de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $objet = new PHPExcel_Reader_Excel5();
     
    // Open template
    $excel = $objet->load('template23.xls');
    $sheet = $excel->getSheet(0);
    J'y insert mes données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $i = 0;
    foreach ($data as $value){    		    				
    	$sheet->setCellValueByColumnAndRow(0, $i+2, $value['name']);
    	$sheet->setCellValueByColumnAndRow(1, $i+2, $value['value']);
    	$i++;
    }
    Et je sauvegarde le tout dans un nouveau fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $writer->save('autreFichier.xls');
    Jusque là, c'est presque le rêve absolu... car mon fichier se rempli correctement.

    Les entêtes de colonne que j'ai mis dans le template n'ont pas bougées, mais malheureusement PLUS de graph!

    Là je n'ai plus d'idées! Pourquoi mes entêtes restent et le graph disparaît??

    Merci d'avance pour le coup de pouce.

  3. #3
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    Étant donnée que cette librairie ne gère pas pour le moment les graphiques, les formulaires, les macros et autres. Ils sont totalement ignorer.

    A mon avis vous devez utiliser les librairies PHP existantes, ensuite insérer l'image résultante dans un nouveau classeur.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  4. #4
    Membre régulier
    Homme Profil pro
    Apprenti Informatique
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par Thes32 Voir le message
    Salut,

    Étant donnée que cette librairie ne gère pas pour le moment les graphiques, les formulaires, les macros et autres. Ils sont totalement ignorer.

    A mon avis vous devez utiliser les librairies PHP existantes, ensuite insérer l'image résultante dans un nouveau classeur.
    J'ai le même problème que les deux autres personnes, qu'est ce que vous entendez par librairies PHP existantes ? Avez vous un lien qui détaille la procédure à suivre ?

    Merci d'avance

  5. #5
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    @cfried : L'idée c'est de générer le graphique avec une lib comme jpGraph, eZcgraph ou Artishow ensuite récupérer l'image statique générer pour l’insérer dans un classeur.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  6. #6
    Membre régulier
    Homme Profil pro
    Apprenti Informatique
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par Thes32 Voir le message
    @cfried : L'idée c'est de générer le graphique avec une lib comme jpGraph, eZcgraph ou Artishow ensuite récupérer l'image statique générer pour l’insérer dans un classeur.
    Merci pour ce premier éclairage, je vais regarder ces librairies mais est-ce la même chose avec les éléments de formulaire qui ne sont pas repris des templates Excel avec PHPExcel ?

  7. #7
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Comme les macros, il me semblent que les formulaires ne sont pas également supporter dans la version actuelle de PHP Excel.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  8. #8
    Membre régulier
    Homme Profil pro
    Apprenti Informatique
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par Thes32 Voir le message
    Comme les macros, il me semblent que les formulaires ne sont pas également supporter dans la version actuelle de PHP Excel.
    Ca je vous le confirme, mais comment contourner le problème ?
    Je pensais créer un fichier excel résultat avec PHPExcel contenant les données brutes et ensuite créer le fichier formulaire complet grâce à un script vba associant les données avec le formulaire.

    Auriez vous une solution moins lourde ?

  9. #9
    Membre confirmé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Points : 537
    Points
    537
    Par défaut
    Comme PHPExcel est libre, faut pas lui demander de fonctionner comme Excel qui est payant ! Non ?
    Autre solution si tu travailles sur serveur Windows (avec MSOffice d'installé)
    d'utiliser COM et dialoguer avec depuis PHP
    Un tutorat sur Developpez existe

  10. #10
    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 Insérer une image sur un graphe dans un fichier excel avec PHPEXcel
    Bonjour, svp comment Insérer une image sur un graphe dans un fichier excel avec PHPEXcel? j'ai un probléme concernant les légendes du pie graph, ils n’apparaîtront, même dans ce lien c'est le même prbléme https://phpexcel.codeplex.com/discussions/359273 svp comment faire pour introduire deux images sur un graphe? ici c'est le code de la fonction d'exportation.MErci de me répondre je me bloque en ce point.
    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
    77
    78
    79
    80
    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);
    		$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('HDDs Monitoring                                                      Failed                                       success');
    	$plotarea = new PHPExcel_Chart_PlotArea($layout1, array($series));
    	$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false);
    	$chart = new PHPExcel_Chart(
    		'chart1',                                       // name
    		$title,                                         // title
    		$legend,                                        // legend
    		$plotarea,                                      // plotArea
    		true,                                           // plotVisibleOnly
    		0,                                              // displayBlanksAs
    		null,                                           // xAxisLabel
    		null                                            // yAxisLabel
    	);
    	echo ($legent);
    	$chart->setTopLeftPosition('D1');
    	$chart->setBottomRightPosition('H20');
    	$GrapheWorkSheet->addChart($chart);
    	$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    	$writer->setIncludeCharts(TRUE);
    	header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
      	header('Content-Disposition: attachment;filename="HDD_MONITORING.xlsx"');
      	header('Cache-Control: max-age=0');
    	$writer->save('php://output');	
     
    //	$writer->save("Historique/DisquesHistory ".date("Y-m-d_H-i",time()).".xlsx");
      }

Discussions similaires

  1. Modification d'un fichier avec un formulaire PHP
    Par FordPrefect dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2011, 21h51
  2. comment récuperer la date de modification d'un fichier avec FOPEN ?
    Par Frantz69 dans le forum Bibliothèque standard
    Réponses: 8
    Dernier message: 05/02/2009, 09h13
  3. Conversion de fichiers avec graphiques *.dvi *.ps
    Par olivier Perrot dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 18/11/2007, 14h47
  4. Réponses: 10
    Dernier message: 05/01/2007, 20h54
  5. Modification d'un fichier avec vi
    Par fabszn dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 05/01/2006, 11h50

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