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] Probleme avec le zip


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 17
    Points : 20
    Points
    20
    Par défaut [PHPExcel] Probleme avec le zip
    salut à tous,

    voila, j'ai un probleme (oui, comme beaucoup d'ailleurs ) en voulant enregistrer un fichier excel2007 depuis un navigateur web

    Quand je le lance depuis: http://MON-IP/MON-URI, j'ai dans mes logs apache cela:*
    [error] [client X.X.X.X] PHP Fatal error: Uncaught exception 'Exception' with message 'Could not close zip file test.xlsx.' in /usr/src/Classes/PHPExcel/Writer/Excel2007.php:400\nStack trace:\n#0 /var/www/MON-VHOST/test.php(53): PHPExcel_Writer_Excel2007->save('test.xlsx')\n#1 {main}\n thrown in /usr/src/Classes/PHPExcel/Writer/Excel2007.php on line 400
    Le probleme est que j'ai bien les extention zip pour le php
    php -m
    xml
    xmlreader
    xmlwriter
    zip
    zlib

    php -v
    PHP 5.2.6-1+lenny3

    J'ai même ajouté l'extension zip via le pecl pour être vraiment sûr mais quenini
    J'ai aussi créer le fichier test.xlsx en lui donnant les droits 777 pour être plus souple.
    Je sêche litterallement.

    Concernant le script, rien d'impressionnant
    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
    <?php
     
    include '/usr/src/Classes/PHPExcel.php';
    include '/usr/src/Classes/PHPExcel/Writer/Excel2007.php';
    include '/usr/src/Classes/PHPExcel/IOFactory.php'; 
     
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="test.xlsx"');
    header('Cache-Control: max-age=0');
     
    $workbook = new PHPExcel;
     
    /* Definis le nom de l onglet*/
    $sheet = $workbook->getActiveSheet()->setTitle("TEST");
     
    $sheet->setCellValue('A1','TEST');
     
    /* Sauvegarde des fichiers*/
    $writer = new PHPExcel_Writer_Excel2007($workbook);
    $writer->save("test.xlsx");
    ?>
    Le resultat final est que j'arrive bien à télécharger le fichier excel mais il semble corrompu (deja vu plusieurs fois dans d'autres cases):
    Impossible d'ouvrir le fichier car son format ou son extension n'est pas valide.


    Ha oui, très important, cela fonctionne parfaitement en ligne de commande:
    php test.php

    UP1: J'avance un peu sur le sujet.
    Cela concerne uniquement la version 2007. Ca marche nickel quand j'ai le fait via Excel5
    Je penche vers un bug même de phpexcel (c'est plus facile d'incriminer les devellopeur que d'avouer que ca peut venir de moi )

    Merci encore pour votre aide

  2. #2
    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
    Si tu enregistres ton fichier, pourquoi mettre les entête ?

    De plus ton $sheet est incorecte puisque tu ne lui passe par vraiment le getActiveSheet();

    Ceci marche correctement chez moi (Debian Squeeze).

    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
     
    <?php
    include 'Classes/PHPExcel.php';
    include 'Classes/PHPExcel/Writer/Excel2007.php';
    include 'Classes/PHPExcel/IOFactory.php';
     
    $workbook = new PHPExcel;
     
    /* Definis le nom de l onglet*/
    $sheet = $workbook->getActiveSheet();
    $sheet->setTitle("TEST");
     
    $sheet->setCellValue('A1','TEST');
     
    /* Sauvegarde des fichiers*/
    $writer = new PHPExcel_Writer_Excel2007($workbook);
    $writer->save("test.xlsx");
    ?>
    Maintenant, j'ai déjà eu un souci de ZIP, mais c'était chez un client en Win2003, et c'était la librairie zip.dll qui était corrompue.

    C'est peut-être une piste.

    PS : quand j'étais en Lenny, je n'ai jamais eu ce souci il me semble !

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    Coucou MaitrePylos,

    En fait, je n'avais pas mis tout mon code. Concernant le getActiveSheet(); je l'active en faisant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheet = $workbook->getActiveSheet()->setTitle("TITRE");
    merci d'ailleurs pour le tuto

    Justement je pensais avoir des soucis avec la librairie php_zip mais j'ai eu le même problème en l'ajoutant via le pecl.

    Et bizarrement, ca fonctionne bien quand je le fait avec un autre format que 2007.

    Après pour les header, j'en ai besoin pour pouvoir enregistrer le fichier par l'utilisateur final, et non le stocker dans un répertoire spécifique.

    Voila, Voila
    Les mystères des nouvelles technologies, j'ai du oublier quelque chose

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    concepteur développeur
    Inscrit en
    Juin 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : concepteur développeur

    Informations forums :
    Inscription : Juin 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour.
    J'avais le même souci, il a juste fallu que je modifie les droits sur le dossier de destination du fichier.

Discussions similaires

  1. [Archive::Zip] - probleme avec extractToFileHandle
    Par syneau dans le forum Modules
    Réponses: 4
    Dernier message: 10/02/2011, 16h26
  2. probleme avec ant zip destfile
    Par luckyluc. dans le forum ANT
    Réponses: 0
    Dernier message: 28/05/2009, 13h07
  3. probleme avec java.util.zip
    Par tarekphp dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 13/05/2009, 18h36
  4. probleme avec $zip->addfile() ds une fonction
    Par zozizozu dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2009, 14h26
  5. Réponses: 5
    Dernier message: 05/12/2006, 14h04

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