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 21/12/2010, 14h03   #1
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Par défaut [PHPExcel] php://output ?

Bonjour à toutes et à tous,

Lorsque je ressort un fichier xls par la sortie "php://output" celui arrive coronpu
: message : Impossible d'ouvrir le Fichier "fichier.xlsx" car son format ou son extension n'est pas valide. Vérifier que le fichier n'est pas endommagé et son extension correspond bien au format du fichier.

Je ne pense pas que ça soit un problème phpExcel puisque lorsque j'enregistre ce même fichier sur le serveur celui-ci est correct.

D'où ma question: comment fonction cette sortie ? peut on régler certains paramètres liés à celle-ci ? ...

Merci d'avance
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 14h16   #2
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
N'est-ce pas un problème de format Excel ?

xlsx est le format XML d'Office sans doute incompatible avec phpExcel... Essaye avec un fichier xls.
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h33   #3
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Désolé, j'aurais dut le préciser mais j'ai aussi essayé en xls (Excel 5) et le fichier est rempli de hiéroglyphes lorsque que je le sort par output. Alors qu'il est correct en l'enregistrant sur le serveur.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 16h28   #4
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Il faut peut-être préciser un header avant la sortie du fichier ?
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 17h15   #5
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Oui, c'est ce que je fais. Voici le code :
Code :
1
2
3
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename=fichier.xlsx ');
$writer->save('php://output');
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 14h45   #6
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Je n'ai jamais fait ça donc je suis ptêt à côté de la plaque..

Mais un truc m'intrigue :

la ligne
Code :
$writer->save('php://output');
sauve ce qui est en sortie, ou est-ce que ça écrit en sortie ? Si ça ne fait que sauver, je pense mettre les header AVANT d'écrire sur la sortie...
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h28   #7
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
C'est la commande phpExcel pour afficher directement à partir du navigateur.
Apparemment ça envoi le fichier préparé à une sortie standard php.
Mais le fichier arrive corrompu. Je met effectivement les header avant la sortie.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h49   #8
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
Avez-vous tenu compte des recommandations des développeurs ?

Citation:
* Make sure not to include any echo statements or output any other contents than the Excel file. There should be no whitespace before the opening <?php tag and at most one line break after the closing ?> tag (which can also be omitted to avoid problems).

Make sure that your script is saved without a BOM (Byte-order mark). (Because this counts as echoing output)
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h04   #9
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Salut Maitre,
Oui j'ai regarder la doc dév et j'ai appliqué les recommandations :
-ne pas mettre d'autres sorties (echo, print_r...)
-ne pas fermer la balise php pour éviter les problèmes
-mettre le format de fichier en without bom (j'ai mis en UTF without BOM)
J'ai essayé avec ou sans balise php fermante, même résultat.
Je vais essayé de recomposer le fichier petit à petit pour essayer de voir où ça bloque. Si vous avez des idées n'hésitez pas.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 15h48   #10
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Ok j'ai trouvé d'où venait le problème. Je faisais un :
Code :
require_once('connexion.inc.php');
pour initialiser ma connexion. Et en fait c'est le require faisait planter.

Il suffit de mettre l'initialisation de la connexion directement dans le script de l'export sans l'inclure par require, j'ai pas essayé avec include() mais je suppose que ça doit être pareil.

En tout cas merci à tous.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h47.


 
 
 
 
Partenaires

Hébergement Web