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

Symfony PHP Discussion :

Export des données d'un formulaire dans un fichier excel


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 65
    Points : 30
    Points
    30
    Par défaut Export des données d'un formulaire dans un fichier excel
    Bonjour,
    J'ai essayé depuis quelques heures à réussir dans l'export des données d'un formulaire dans un fichier excel.
    Mon problème actuel est que le fichier exporté est vide et ne contient aucune information(voir l'aperçu ci joint).
    Ma fonction d'export excel est la suivante:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    public function executeExcel(sfWebRequest $request)
        {   //$y=$request->getParameter($t);
    //$this->taba=array_merge($this->taba,$this->patients );
     
            $file= fopen(sfConfig::get('sf_upload_dir')."/excel.xls", "w") or die ("can't open file.");
           $ms= " <table border='1'> <tr>";
            $i=0;
          foreach ($this->taba as $v) { $i++;
               $ms=$ms."<td>". $v."</td>";
            }
     
            $ms=$ms." </tr></table> ";
      $tr=" <table border='1'>
      <tr>
      <td colspan='4'>Customer </td>
      <td>N° de facture   :</td>
      </tr>
      <tr>
      <td colspan='4'>Project :</td>
      <td>Date sent :</td>
      </tr>
      <tr>
      <td colspan='4'>Net cash:</td>
      <td>Deadline : </td>
      </tr>
      <tr>
      <td colspan='4'></td>
      <td>Deadline    :</td>
      </tr>
      <tr>
      <td>
      </td>
      </tr>";
     
      fwrite($file,$ms) or die ("can't write to file.");
     $f="/excel.xls" ;
     
        session_write_close();
     
        $this->getResponse()->clearHttpHeaders();
        $this->getResponse()->setContentType('application/force-download');
        $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="' .$f.'"');
        $this->getResponse()->setHttpHeader('Content-Transfer-Encoding', 'binary');
        $this->getResponse()->setHttpHeader('Content-Length', $f);
        $this->getResponse()->setHttpHeader('Connection', 'close');
     
        $this->getResponse()->sendHttpHeaders();
     
        readfile(sfConfig::get('sf_upload_dir') ."/excel.xls");
          throw new sfStopException();
         $this->redirect("prostate_recap/filtre");
        }
    Pourriez vous m'aider pour résoudre ce bug?
    Images attachées Images attachées  

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Essai de créer un fichier .csv il est plus facile a crée et utilisable comme un .xls

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 65
    Points : 30
    Points
    30
    Par défaut
    Bonjour,
    Je veux corriger le code actuel.Pourriez vous m'aider pour savoir ou ça se bloque?

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    A partir de la ligne qui suit la déclaration de fonction...

    Tu mélanges du code de sortie (V) dans ton contrôleur (C).
    Tu te mélanges entre un tableau HTTP et un tableau Excel.
    Tu mélanges du style CSS dans ton HTTP...
    Tu ne lis pas ce que te propose m4riachi et qui est la solution.

    A part cela, c'est tout bon.

    Il existe des bibliothèques qui permettent de générer un tableau excel, mais en général, pour récupérer des données, le csv est LA solution (avec l'avantage de ne pas limiter la récupération a Excel).

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 65
    Points : 30
    Points
    30
    Par défaut
    Bonjour,j'ai modifié mon code de telle sorte qu'il affiche les fichiers excell convenablement.
    Mon seule soucis maintenant est que je veux afficher pour chaque patient le nom et le prénom et chacun dans une colonne dans la meme ligne.Mon code actuel n'affiche qu'un seul paramétre.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     $this->patients = $q->execute();
           $this->getUser()->setAttribute("patientstable", $this->patients);
        }
        public function executeExcel(sfWebRequest $request)
        {   //$y=$request->getParameter($t);
     
            $patients=$this->getUser()->getAttribute("patientstable");
            $file= fopen(sfConfig::get('sf_upload_dir')."/excel.xls", "w") or die ("can't open file.");
            $ptr = ftell($file);
     
           foreach ($patients as $v) {
                    fputs($file,$v."\n");
    //           $ms=$ms."<td>". $v."</td>";
            }
     
     $f="/excel.xls" ;
     
        session_write_close();
     
        $this->getResponse()->clearHttpHeaders();
        $this->getResponse()->setContentType('application/force-download');
        $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="' .$f.'"');
        $this->getResponse()->setHttpHeader('Content-Transfer-Encoding', 'binary');
        $this->getResponse()->setHttpHeader('Content-Length', $f);
        $this->getResponse()->setHttpHeader('Connection', 'close');
     
        $this->getResponse()->sendHttpHeaders();
     
        readfile(sfConfig::get('sf_upload_dir') ."/excel.xls");
         throw new sfStopException();
         $this->redirect("prostate_recap/filtre");
        }
    Pourriez vous m'aider pour que je puisse afficher le nom et le prenom de chaque patient?

Discussions similaires

  1. [XL-2007] inserer et traiter des données d'une douchette dans un fichier excel fermé
    Par ludovicchapo dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/04/2013, 08h44
  2. Importer des données de sql server dans un fichier excel
    Par sab_info dans le forum Développement
    Réponses: 2
    Dernier message: 30/01/2013, 09h45
  3. [1.x] Ajout des paramétres d'un formulaire dans un fichier excel
    Par farhaenis dans le forum Symfony
    Réponses: 0
    Dernier message: 02/08/2011, 09h51
  4. Réponses: 4
    Dernier message: 14/12/2009, 13h43
  5. Réponses: 2
    Dernier message: 02/12/2008, 13h15

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