Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
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 31/07/2011, 11h52   #1
Invité de passage
 
Inscription : mars 2011
Messages : 60
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 60
Points : 1
Points : 1
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 :
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
Type de fichier : png excell.png (60,3 Ko, 5 affichages)
farhaenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 14h34   #2
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 460
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

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

Informations forums :
Inscription : mai 2009
Messages : 460
Points : 644
Points : 644
Essai de créer un fichier .csv il est plus facile a crée et utilisable comme un .xls
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/07/2011, 19h08   #3
Invité de passage
 
Inscription : mars 2011
Messages : 60
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 60
Points : 1
Points : 1
Bonjour,
Je veux corriger le code actuel.Pourriez vous m'aider pour savoir ou ça se bloque?
farhaenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 00h43   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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).
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/08/2011, 11h55   #5
Invité de passage
 
Inscription : mars 2011
Messages : 60
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 60
Points : 1
Points : 1
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 :
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?
farhaenis 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 13h38.


 
 
 
 
Partenaires

Hébergement Web