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] __construct() must be an instance of PHPExcel


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut [PHPExcel] __construct() must be an instance of PHPExcel
    Bon le problème demeure, j'ai toujours ce caractère de séparation('?') entre chaque lettre d'un titre de feuille... Comprend vraiment pas..
    J'ai pourtant tout essayé, et surtout j'ai testé avec un autre reader excel que celui de PHPExcel, et c'est exactement pareil. Je me doute que c'est a cause du format de fichier mais là je désespère !

    Tu proposais comme solution MaitrePylos de voir du côté de l'encodage. Seulement je suis un peu perdu, où est-ce que je dois le gérer ?
    Je ne trouve pas de méthode dans cette classe pour le spécifier.

    Cdt,

    MadProf

  2. #2
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    Comme je suis au boulot, j'ai aussi du mal à tout tester.

    Arrives-tu à récupérer ton onglet 'Garde' ?

  3. #3
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    @Madprof

    Je viens de tester ton code, j'ai fait ceci pour que tu puisse reproduire chez toi

    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
     
    <?php 
    require_once 'PHPExcel.php';
    require_once 'PHPExcel/Writer/Excel5.php';
    require_once 'PHPExcel/IOFactory.php';
     
    		$objReader = PHPExcel_IOFactory::createReader('Excel5');
    		$objReader->setReadDataOnly(false);
    		$objPHPExcel = $objReader->load('1009_REV1_HistoriqueNeuf.xls');
    		$sheetsNames = $objPHPExcel->getSheetNames();
     
    		for($i=0;$i<count($sheetsNames);$i++){
    			echo $sheetsNames[$i].'<br />';
    		}
    ?>
    Dans mon cas j'obtiens bien le nom de sheet, maintenant je développe dans un environnement Unix, ce qui est plus facile au niveau encodage.

    Si mon code te renvoie la même erreur fais des essais avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo utf8_decode($sheetsNames[$i]).'<br />';
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo utf8_encode($sheetsNames[$i]).'<br />';
    Dis moi ce qu'il en retourne.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    RE,
    J'ai tenté avec ton code, toujours la même chose. En revanche j'ai testé sous plusieurs environnements et là c'est pas tjrs pareil. Mon problème disparaît sur un autre server censé être identique..
    Sur une Suze ca marche pas et sur une Red Hat pas de souci. J'ai l'impression que le problème vient de la conf de l'user lançant apache. Je check actuellement les variables d'environnement...
    J'ai déjà vérifié le php.ini et le httpd.con, pas de différence de ce côté.

    En tout cas merci, je suis pas sur que tu puisse faire autre chose pour moi malheureusement, surtout sans pouvoir prendre la main ou tester directement.

    ++

    MadProf

  5. #5
    Invité de passage
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1
    Par défaut
    Citation Envoyé par MadProf Voir le message
    RE,
    J'ai tenté avec ton code, toujours la même chose. En revanche j'ai testé sous plusieurs environnements et là c'est pas tjrs pareil. Mon problème disparaît sur un autre server censé être identique..
    Sur une Suze ca marche pas et sur une Red Hat pas de souci. J'ai l'impression que le problème vient de la conf de l'user lançant apache. Je check actuellement les variables d'environnement...
    J'ai déjà vérifié le php.ini et le httpd.con, pas de différence de ce côté.

    En tout cas merci, je suis pas sur que tu puisse faire autre chose pour moi malheureusement, surtout sans pouvoir prendre la main ou tester directement.

    ++

    MadProf
    Bonjour à tous,
    nouvel utilisateur acharné de phpexcel (merci maitrepylos ) je pense que le probleme que rencontre MadProf et lié au fait que excel (toutes versions) ne supporte pas plus de 31 caractères dans le noms des onglets. J'espère ainsi apporter une solution à ce problème.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    Hello Nator,

    Oui c'est exactement çà, Excel n'accepte que 31 caractères dans le titre et PHPExcel ne le vérifie que dans sa dernière version, mais ca n'est pas le problème originel.
    Mon problème, comme je l'ai dit à la page précédente (post 135), c'est que le reader excel5 me rajoute un "?" entre chaque caractère du titre et du coup ce dernier devient trop long (il fait en réalité 17 caractères). Le problème n'est présent que sur certaines configurations mais ayant PHP et Apache identique. La seule piste de recherche que j'ai est donc les variables d'environnement de l'user lançant apache, et ca, je n'y ai pas accès.

    Citation Envoyé par MadProf
    Le reste n'a pas d'importance, ma classe mère ne comportant que des méthodes d'affichage et n'utilisant pas PHPExcel je ne voyait pas l'utilité de la mettre ici.
    La méthode qui plante est la méthode _checkSheetTitle() qui est native de la classe worksheet de PHPExcel ( Worksheet.php(704): PHPExcel_Worksheet::_checkSheetTitle('R?e?v?e?r?s?e?m...') )

    Lors de la lecture du titre de la feuille, j'ai un caractère supplémentaire ("?") entre chaque lettre ce qui m'amène à des titres trop long (max length = 31 char).
    J'ai testé en rebasculant PHPExcel en version 1.7.0 mais rien n'y fait.
    Merci quand même

  7. #7
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    Et dans l'urgence pour palier, pq tu ne fais une fonction qui vire ce caractère ?

    En attendant que l'illumination nous tombe dessus

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    Héhé, c'est évidemment ce que j'ai fait au début, jusqu'à ce que je me rende compte qu'en prod le problème n'est plus (pas très pratique pour tester). Donc je n'ai plus qu'à attendre que l'équipe d'exploit trouve pourquoi les machines ne sont pas isoprod et on aura la réponse.

    En tout cas pas facile ce problème, j'ai vu un gars avec le même sur le forum officiel, bah pas une seule réponse en rapport, même pas une piste.

    Pour moi c'est soit une histoire d'encodage merdique comme tu le disais MaitrePylos, ou alors un pb d'enregistrement dans un format avec telle ou telle version d'Excel. Des que j'ai le temps je ferai une passe complète avec Excel de 97 à 2007 pour voir si c'est lié.

    Je suis maudit je vous dit, maudit ! J'ai hâte de savoir le pourquoi du comment, c'est exactement le genre de truc qui a le don de m'énerver quand je trouve pas de soluce... les mystères de l'informatique...

    MadProf

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut Erreur lors de l'installation
    Bonjour à tous,

    Je découvre PHPExcel et je m'essaie à cette classe en suivant pas-à-pas le tutoriel. J'ai créer un fichier php comme ça :
    <?php
    include 'PHPExcel.php';
    include 'PHPExcel/Writer/Excel5.php';
    $workbook = new PHPExcel;
    $sheet = $workbook->getActiveSheet();
    $sheet->setCellValue('A1','MaitrePylos');
    $writer = new PHPExcel_Writer_Excel5();
    $records = './fichier.xls';
    $writer->save($records)
    ?>
    Quand j'exécute ce fichier j'obtiens l'erreur suivante

    Catchable fatal error: Argument 1 passed to PHPExcel_Writer_Excel5::__construct() must be an instance of PHPExcel, none given, called in /volume1/w...../1/Classes/EssaiPHPExcel.php on line 7 and defined in /volume1/w...../1/Classes/PHPExcel/Writer/Excel5.php on line 100
    Ma configuration serveur NAS Synology, PHP 5.2.10 et je n'ai besoin que de fichier Excel 5

    QQ sait me sortir du trou ?

    D'avance merci

  10. #10
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    La réponse est clair, il te manque un argument dans l'instanciation de ton objet Excel5.

    Fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $workbook = new PHPExcel;
    ......
    $writer = new PHPExcel_Writer_Excel5($workbook);
    ....
    tu vois que je met en argument l'objet de PHPExcel dans l'instanciation de PHPExcel_Writer_Excel5

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut
    10 000 000 0000 mercis ça fonctionne nickel.

    >Je continue ma découverte de cette classe.

    Cdlt

Discussions similaires

  1. [PHPExcel] Génération de Fichiers Excel
    Par MaitrePylos dans le forum Bibliothèques et frameworks
    Réponses: 223
    Dernier message: 27/06/2016, 14h16
  2. [PHP 5.0] Utilisation de PHPExcel
    Par johnson95 dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2009, 11h13
  3. [Excel] Formattage des nombres avec PHPExcel !
    Par gentyjp dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/10/2007, 02h00

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