Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2010, 17h15   #1
Candidat au titre de Membre du Club
 
Prof Mad
Inscription : mars 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : Prof Mad

Informations forums :
Inscription : mars 2010
Messages : 9
Points : 10
Points : 10
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
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 08h07   #2
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
Comme je suis au boulot, j'ai aussi du mal à tout tester.

Arrives-tu à récupérer ton onglet 'Garde' ?
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 08h49   #3
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
@Madprof

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

Code :
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 :
1
2
 
echo utf8_decode($sheetsNames[$i]).'<br />';
ou

Code :
1
2
 
echo utf8_encode($sheetsNames[$i]).'<br />';
Dis moi ce qu'il en retourne.
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 12h15   #4
Candidat au titre de Membre du Club
 
Prof Mad
Inscription : mars 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : Prof Mad

Informations forums :
Inscription : mars 2010
Messages : 9
Points : 10
Points : 10
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
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2010, 22h25   #5
Invité de passage
 
Inscription : janvier 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 1
Points : 1
Points : 1
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.
nator est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2010, 11h44   #6
Candidat au titre de Membre du Club
 
Prof Mad
Inscription : mars 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : Prof Mad

Informations forums :
Inscription : mars 2010
Messages : 9
Points : 10
Points : 10
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
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2010, 13h37   #7
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
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
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2010, 17h54   #8
Candidat au titre de Membre du Club
 
Prof Mad
Inscription : mars 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : Prof Mad

Informations forums :
Inscription : mars 2010
Messages : 9
Points : 10
Points : 10
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
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2010, 11h05   #9
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 68
Points : 15
Points : 15
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 :
Citation:
<?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

Citation:
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
bronon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2010, 11h14   #10
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
La réponse est clair, il te manque un argument dans l'instanciation de ton objet Excel5.

Fait comme ceci :

Code :
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
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2010, 11h39   #11
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 68
Points : 15
Points : 15
10 000 000 0000 mercis ça fonctionne nickel.

>Je continue ma découverte de cette classe.

Cdlt
bronon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h30.


 
 
 
 
Partenaires

Hébergement Web