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 05/03/2010, 18h24   #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] Maximum 31 characters allowed in sheet title

Bonjour,

Tout d'abord merci à MaitrePylos pour son tuto. Avec en plus la doc officielle c'est relativement facile.
Je n'ai aucun souci pour lire les fichiers .xslx et .cvs en revanche lors de la lecture d'un fichier .xls avec le reader Excel5, j'ai des soucis.

En effet firebug me renvoie:
Uncaught exception 'Exception' with message 'Maximum 31 characters allowed in sheet title.'
Stack trace:
#0 /home/devmon01/WEB/reporting/utils/PHPExcel/Worksheet.php(704): PHPExcel_Worksheet::_checkSheetTitle('R?e?v?e?r?s?e?m...')

Je capte pas pourquoi j'ai un "?" entre chaque lettre du titre de la feuille.

Si quelqu'un a déjà rencontré ce problème je suis preneur de la solutions. J'ai trouvé un post étranger où un gars a le même souci mais aucune réponse...

D'avance merci
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2010, 16h48   #2
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 MaitrePylos, merci pour ta réponse rapide.
Je te joins la partie du code qui ne fonctionne pas comme je le voudrais.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
//instanciation
if($this->pageExiste('Garde') == true){
	$this->pageGarde = new PageGardeXls($this->file);
}
 
//debut de la classe incriminée
class PageGardeXls extends Page{
 
	//page de garde
	var $type_catalogue_cell = $CELL_TYPE_CATALOGUE_XLS;
	var $catalogue_cell = $CELL_CATALOGUE_XLS;
	var $commentaire_cell = $CELL_COMMENTAIRE_XLS;
	var $version_cell = $CELL_VERSION_XLS;
 
	//constructeur
	public function  __construct($fichier, $index) {
		parent::__construct($fichier);
		$objReader = PHPExcel_IOFactory::createReader('Excel5');
		$objReader->setReadDataOnly(true);
		$objPHPExcel = $objReader->load($this->file);
		$this->objWorkSheet = $objPHPExcel->getSheet($index);
	}
Voilà l'erreur est généré dès l'appel du constructeur
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 08h19   #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
Tu mélanges allègrement PHP 5 et PHP 4


de plus tu fais appel à une classe étendue, je ne vois pas où se trouve la focntion
?

Tu met des constante en variables, c'est un peu le fouillis.

Optimise ton code et reposte les bons éléménts
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 12h12   #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
Hello MaitrePylos,

Tout d'abord merci pour ta réponse.

Le code que j'ai envoyé est certes pas très beau, mais bon...

Code :
1
2
3
4
5
6
7
8
9
//constructeur
public function __construct($fichier, $index) {
parent::__construct($fichier);
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($this->file);
$this->objWorkSheet = $objPHPExcel->getSheet($index);
}
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.

PS : Par curiosité, qu'est ce qui est PHP4 dans ce que j'ai posté avant ? C'est réellement un risque d'utiliser des méthodes des 2

D'avance merci :d
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 14h22   #5
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
tu utilises le mot clé var et c'est cela qui est php4, ce n'est plus le cas en php5, d'autant plus que tu utilise __construct qui est php5.

Pour ton souci regarde du côtè de l'encodage utf-8
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2010, 12h05   #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
Re,
En fait j'ai réussi finalement à ouvrir un .xls, pour cela j'ai du l'ouvrir avec Excel puis l'enregistrer en .xls Excel 5.0/95.
Du coup le problème reste entier mais à mon avis le souci vient du fichier Excel en lui-même...

Si je trouve une soluce j'en ferai part.
++

MadProf
MadProf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2010, 11h50   #7
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
Pour ceux qui auraient le même problème que moi :

"Uncaught exception 'Exception' with message 'Maximum 31 characters allowed in sheet title.'"
Lors de l'ouverture d'un fichier .xls voici la solution que j'ai adoptée:
Mise à jour PHP de la 5.2.6 vers la 5.2.12.
Utilisation du reader Excel2007 au lieu de Excel5.
Du coup : impossibilité de lire les formules en revanche on peut lire les résultats en cellules.

Je pense que cela viens du fait que les fichiers .xls que j'utilise ont été générés avec une version postérieure à Office 2003. j'essaierai avec un office 2000 quand j'en aurai un sous la main.

++

MadProf
MadProf 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