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 :

[PEAR] Intégration de PEAR à ZF pour Excel : les require échouent


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut [PEAR] Intégration de PEAR à ZF pour Excel : les require échouent
    Bonjour tout le monde,

    Actuellement, je travaille sur un projet pour une entreprise. Ce projet est réalisé en Php avec Zend Framework (avec MVC). Je dois cependant générer des fichiers Excel avec des données de ma Bdd.

    Pour cela, j'ai lu et essayé le tuto http://g-ernaelsten.developpez.com/tutoriels/excelphp/.

    Voici comment mon application est découpée :

    index.php
    ___application/
    ______controllers/
    _________...
    ______models/
    _________...
    ______views/
    _________...
    ___library/
    ______Zend/
    ______Spreadsheet/
    ______OLE/
    ___...

    Voici comment j'ai défini mon include_path dans index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	set_include_path('.'
    	    . PATH_SEPARATOR . './library'
    	    . PATH_SEPARATOR . './application/models/'
    	    . PATH_SEPARATOR . get_include_path()
    	);
    et voici comment je tente de génerer un tableur Excel; j'active l'action d'un controlleur, comme suggéré dans l'article:

    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
     
    public function generateAction()
    	{
    		$this->Excel();
    		$this->_redirect('index/manage/');
    	}
     
    	private function Excel()
    	{
    		/**
    		* On génère le fichier de base
    		*/
    		$workbook = new Spreadsheet_Excel_Writer();
    		$workbook->setTempDir('.');
    		$workbook->send('base.xls');
    		$worksheet = $workbook->addWorksheet();
     
    		$worksheet->write(1,2,'toto');
     
    		$workbook->close();
    		$workbook->sendFile();
    	}
    Cependant, il semblerait que qqc m'aie échappé quelque part pcq j'ai toujours une erreur :

    Warning: require_once(PEAR.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\Nanocyl\library\Spreadsheet\Excel\Writer.php on line 34

    Fatal error: require_once() [function.require]: Failed opening required 'PEAR.php' (include_path='.;./library;./application/models/;.;C:\php5\pear') in C:\wamp\www\Nanocyl\library\Spreadsheet\Excel\Writer.php on line 34
    Comment puis-je résoudre ce petit soucis ?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Le script PEAR.php doit être accessible depuis ton include_path, donc placé dans /library

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    De plus si tu as télécharger mes sources, vérifie les droits sur les répertoires.

    Je sais que d'autres utilisateurs ont eu un souci avec cela.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Il semblerait que ce ne soit pas un problème de droit d'accès.

    Au risque de paraitre pour un ignorant, comment je peux corriger mon set_include_path afin que cela fonctionne ??

    Le fichier se trouve dans : \library\Spreadsheet\Excel\

    Merci d'avance

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    je peux voir un partie de ton code ?

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Le script PEAR.php doit être disponible dans l'un des chemins d'include_path. D'après le code que tu as mis plus haut, ./library fait partie d'include_path, il faut donc mettre le script dans :
    ./library/PEAR.php
    Et non dans :
    ./library/Spreadsheet/Excel/PEAR.php

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Je viens de déplacer le fichier PEAR.php à la racine du repertoire /library/ et il semble que ca tourne

    cependant, il subsiste des erreurs bizares :


    Strict Standards: Assigning the return value of new by reference is deprecated in C:\wamp\www\Nanocyl\library\PEAR.php on line 569

    Strict Standards: Assigning the return value of new by reference is deprecated in C:\wamp\www\Nanocyl\library\PEAR.php on line 572

    Strict Standards: Assigning the return value of new by reference is deprecated in C:\wamp\www\Nanocyl\library\Spreadsheet\Excel\Writer\Workbook.php on line 186

    Strict Standards: Assigning the return value of new by reference is deprecated in C:\wamp\www\Nanocyl\library\Spreadsheet\Excel\Writer\Workbook.php on line 195
    Ca doit probablement provenir de ma ligne ici (index.php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    	error_reporting(E_ALL|E_STRICT);
    Cependant, lorsque je tente d'exécuter l'action, rien ne se passe... :s

    Ici, je tente d'exécuter /index/generate/ et je recharge bien la page /index/manage/

    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
     
    public function generateAction()
    	{
    		$this->Excel();
    		$this->_redirect('index/manage/');
    	}
     
    	private function Excel()
    	{
    		/**
    		* On génère le fichier de base
    		*/
    		$workbook = new Spreadsheet_Excel_Writer();
    		$workbook->setTempDir('.');
    		$workbook->send('base.xls');
    		$worksheet = $workbook->addWorksheet();
     
    		$worksheet->write(1,2,'toto');
     
    		$workbook->close();
    		$workbook->sendFile();
    	}
    Je ne comprend pas :s

    Merci pour votre aide

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Essaye ceci

    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
     
     
    public function generateAction()
    	{
    		$this->Excel();
    		//$this->_redirect('index/manage/');
    	}
     
    	private function Excel()
    	{
                     $this->_helper->resetHelpers();
    		/**
    		* On génère le fichier de base
    		*/
    		$workbook = new Spreadsheet_Excel_Writer();
    		$workbook->setTempDir('.');
    		$workbook->send('base.xls');
    		$worksheet = $workbook->addWorksheet();
     
    		$worksheet->write(1,2,'toto');
     
    		$workbook->close();
    		$workbook->sendFile();
    	}

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Ca fonctionne !!

    Un grand merci.

    Dans le fichier Excel, il me met ceci :
    script 'index/generate.phtml' not found in path (.\application\views\scripts\)
    Je suppose que c'est parce qu'il n'existe pas de fichier generate.phtml. Cependant, si je crée un fichier de ce nom, vide, le document excel généré contient ma page web avec plein de caractères non lisibles.

    Il fait aussi une alerte au démarage d'Excel comme quoi le format du fichier s'ouvrant n'est pas celui qu'il prétend être. Je ne sais pas si c'est important...

  10. #10
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Alors soit tu passes par generateAction et il faut également annuler la vue par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->_helper->resetHelpers();
    soit tu va directement chercher la méthode Excel que tu renommes excelAction.

    Pour ce qui est de l'erreur comme quoi ce n'est pas le bon fichier, je ne sais pas.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    C'est parfait

    avec le $this->_helper->resetHelpers(); tout est généré parfaitement et il ne fait plus l'erreur sur le type de fichier.

    Un grand merci pour votre aide à tous.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    j'ai le même problème, dans le fichier xls générer j'ai des messages d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <b>Deprecated</b>:  Assigning the return value of new by reference is deprecated in .....
    plus du charabia
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'Sheet1
    toto>
    ¶
    Root Entryےےےےےےےے

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    pour précision, en plus des erreurs qu'a rencontrer "vega_55" sur /PEAR.php, j'ai d'autres sur /ROOT.php et /PPS.php, es a cause de la version zend ? j'ai la 1.7.

    Merci d'avance.

  14. #14
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Puis-je voir comment tu intègres les librairies dans ton projet ZF, et comment tu génères le fichier Excel ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    monprojet
    ___application
    ______Controller
    ______models
    ______ .....
    ___library
    ______Zend
    ______My
    ______OLE
    ______Spreadcheet
    ______PEAR.PHP
    ___public
    ___index
    dans mon controller je fais comme ceci :
    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
     
    class ExporterController extends Zend_Controller_Action
    {
     
    	function indexAction()
    	{
    		// $this->_redirect('/exporter');
    	}
     
    	function excelAction()
    	{
    		$this->Excel();
    	}
     
    	private function Excel()
    	{
    		$this->_helper->resetHelpers();
    		/**
    		* On génère le fichier de base
    		*/
    		$workbook = new Spreadsheet_Excel_Writer();
    		$workbook->send('base.xls');
    		$worksheet = $workbook->addWorksheet();
     
                            // $db = Zend_Registry::get('dbAdapter');
    			// $select = $db->select();
    			// $select->from(array('p' => 'personne'), '*');
    			// $select->join(array('c' => 'cohtion'), 'p.NUMPERSONNE = c.NUMPERSONNE', '*');
    			// $select->join(array('pa' => 'paiement'), 'c.NUMPAIEMENT = pa.NUMPAIEMENT', '*');
    			// $select->where('p.NUMROLE IN (?)', array(2, 3));
    			// $sql = $select->__toString();
    			// $this->view->personne = $db->fetchAll($sql);
    		// $i=0;
                    // $personne = new Personne();
    		// foreach($this->personne as $personne) :				
    			// for ($j=0; $j<5; $j++) {
    				// $worksheet->write($i,$j,$personne[$j]);
    				// $worksheet->write($i,$j,$personne['PRENOM']);
    				// $worksheet->write($i,$j,$personne['MONTANT']);
    				// $worksheet->write($i,$j,$personne['TYPE']);
    				// $worksheet->write($i,$j,$personne['NBRPAIEMENT']);
    			// }
    			// $i++;
    		// endforeach;
     
    		$worksheet->write(1,2,'toto');
     
    		$workbook->close();
    		$workbook->sendFile();
     
    	}
     
    }

  16. #16
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Vous n'avez pas le même problème que vega_55, puisque vous générer un fichier xls .

    Par contre quelle version de PHP utilisez vous ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2008, 18h08
  2. Réponses: 7
    Dernier message: 27/07/2007, 12h34
  3. VBA pour Excel pour les nuls
    Par doudoudidou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/02/2007, 12h15
  4. [PEAR][Spreadsheet] Qu'est-ce qui est PEAR pour EXCEL que COM ?
    Par a028762 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/12/2006, 18h34
  5. Lire un fichier Excel pour modifier les valeurs des cellules
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/10/2006, 15h13

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