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] Transmettre nouveau fichier après ouverture d'un premier


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 149
    Points : 80
    Points
    80
    Par défaut [PHPExcel] Transmettre nouveau fichier après ouverture d'un premier
    Bonjour à tous.
    Eh oui encore moi.
    J'ai un soucis qui est en quelque sorte la continuité du sujet concernant l'ouverture et l'écriture d'un fichier execel ( http://www.developpez.net/forums/d12...ichier-ecrire/ ).

    J'ai constaté un problème lorsqu'on veut transmettre un fichier excel à partir d'un fichier excel existant.
    Dans le contexte: J'ouvre un fichier excel (un modèle), j'écris dedans et je souhaite le transmettre à la personne.
    Le problème c'est que la "transmission" du fichier se passe mal.
    J'ai le choix entre:
    - afficher les données dans le navigateur (et donc ne pas transmettre le fichier)
    - transmettre le fichier mais avec comme contenu du fichier lui même et les données qui le constitue (le fameux charabia avec les symboles sortis d'outre-tombe).
    - laisser le fichier sur le serveur et donner le lien du fichier.

    La dernière solution fonctionne à merveille mais l'objectif n'est pas du tout de stocker les fichiers sur le serveur sans quoi il va être très vite rempli.

    Voici le code :
    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
     
    include "./utils/PHP2Excel/PHPExcel.php";
    	include	"./utils/PHP2Excel/PHPExcel/IOFactory.php";
    	include	"./utils/PHP2Excel/PHPExcel/Writer/Excel5.php";
    	include	"./utils/PHP2Excel/PHPExcel/Writer/Excel2007.php";
    	include	"./utils/PHP2Excel/PHPExcel/Reader/Excel5.php";
    	include	"./utils/PHP2Excel/PHPExcel/Reader/Excel2007.php";
     
    $objet = PHPExcel_IOFactory::createReader('Excel5');
    $excel = $objet->load('./GeneratedFiles/Modele.xls');
    $sheet = $excel->getSheet(0);
    $sheet->setCellValue('A2', 'MaitrePylos'); 
    $writer = PHPExcel_IOFactory::createWriter($excel, "Excel5");
    //$writer = new PHPExcel_Writer_Excel5($excel);
    //header('Content-type: application/excel');
    //header('Content-Disposition:inline;filename=Fichier.xls ');
    //$writer->save('php://output');
    $writer->save('Modele-2.xls');
    Les lignes de commentaires sont les possibilités que j'ai essayé et qui ne donnent rien.

    Donc la question est: Pourquoi lorsqu'il s'agit d'ouvrir un fichier et de le transmettre ca plante (alors que créer un fichier et le transmettre marche)?

    Merci d'avance de votre aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans un cas indentique je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition:inline;filename=Fichier-' . date('Y-m-d') . '.xls');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 149
    Points : 80
    Points
    80
    Par défaut
    Je viens d'essayer et cela donne la même chose:
    - le fichier est transmis mais j'ai un message de la part de MS Office qui m'annonce que le fichier est anormal. Lorsque je le l'ouvre j'ai le contenu du fichier lui même.

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    si tu n'as pas l'erreur quand tu enregistres en local, alors c'est que tu as une entête ou un symbole en trop quelque part (genre un espace...)

    Personnellement pour content-disposition je préfère "attachment".
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Vérifie par exemple que ton fichier PHP est UTF8 sans BOM (s'il est en UTF8)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 149
    Points : 80
    Points
    80
    Par défaut
    Il ne me semble pas avoir d'espace "en trop".
    Après peut-être qu'il y a un espace comme tu le dis dans le fichier excel.
    Mais vu que c'est moi qui l'ai créé il ne me semble pas avoir mis une cellule avec un espace quelque part...
    Et oui il est en UTF8 Sans BOM

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux ouvrir ton fichier avec un editeur de texte pour voir ce qu'il y a au début exactement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 149
    Points : 80
    Points
    80
    Par défaut
    Sur mon fichier excel? Je n'ai que des choses bizarres et peu lisible.

    Pour ce qui est de mon fichier PHP.
    Je code avec DW et je passe sous NP++ pour mettre mes fichiers en UTF8 Sans BOM.

    Tu veux voir quelque chose de précis?

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ouvrir le fichier Excel.
    Tu peux comparer le fichier géneré avec un fichier fait manuellement pour essayer de répérer quelque chose d'anormal dans son en-tête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    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
    Bonsoir,

    Pour ma part sous Fedora 17, quoique un peu lent, ceci fonctionne !

    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
     
    <?php
    ini_set('date.timezone', 'Europe/Brussels');
    include "Classes/PHPExcel.php";
            include "Classes/PHPExcel/IOFactory.php";
            include "Classes/PHPExcel/Writer/Excel5.php";
            include "Classes/PHPExcel/Writer/Excel2007.php";
            include "Classes/PHPExcel/Reader/Excel5.php";
            include "Classes/PHPExcel/Reader/Excel2007.php";
     
    $objet = PHPExcel_IOFactory::createReader('Excel5');
    $excel = $objet->load('fichier.xls');
    $sheet = $excel->getSheet(0);
    $sheet->setCellValue('A2', 'MaitrePylos');
    //$writer = PHPExcel_IOFactory::createWriter($excel, "Excel5");
    header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition:inline;filename=Fichier-' . date('Y-m-d') . '.xls');
    $objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
    $objWriter->save('php://output');

Discussions similaires

  1. Problème d'ouverture d'un nouveau fichier
    Par Mounamidou dans le forum Word
    Réponses: 3
    Dernier message: 04/07/2008, 11h19
  2. Réponses: 1
    Dernier message: 27/02/2008, 16h49
  3. Réponses: 1
    Dernier message: 25/07/2007, 12h15
  4. ouverture d'un nouveau fichier ms project
    Par maxeur dans le forum Access
    Réponses: 4
    Dernier message: 23/01/2007, 18h07
  5. Réponses: 2
    Dernier message: 20/04/2006, 22h12

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