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

Laravel PHP Discussion :

Problème avec une génération de csv


Sujet :

Laravel PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Problème avec une génération de csv
    Bonjour,
    Voilà, je génère un CSV de données sur un site créé pour l'occasion en laravel 4.2. Ce CSV s'affiche parfaitement bien lorsque je l'enregistre et que je l'ouvre ensuite dans excel. Le soucis, c'est que les clients n'enregistrent pas le csv, ils l'ouvrent directement dans excel et ça foire complètement. Le fichier s'ouvre en .csv.html, et bien que le fichier respecte les /n, le contenu d'une ligne se met dans une seule et unique cellule.

    Voici le code concerné pour la génération du csv :
    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
    public function exportCSV() {
    			header("Content-Type: application/ms-xls");
    			header("Content-Disposition: force-download; filename=\"Données participants éco-certification.csv");
    			header("Content-Transfer-Encoding: application/ms-xls\n");
    			// tell the browser we want to save it instead of displaying it
     
    			$a = Input::get('agence');
     
    			$csv = '';
    			$csv .= "CODE AGENCE ; MATRICULE ; NOM , PRENOM ; SCORE ; DATE \n";
     
    			if ($a == "all") {
    				$candidats = Candidat::all();
    			} else {
    				$agence = Agence::where('code', '=', $a)->first();
    				$candidats = $agence->candidats;
    			}
    			foreach ($candidats as $candidat) {
    				$csv .= $candidat->agence->code .";". $candidat->matricule .";".  $candidat->nom.";".  $candidat->prenom.";".  $candidat->score.";". date_format(new DateTime($candidat->answered_at), 'd/m/Y') ."\n";
    			}
    			echo mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
     
    	}
    J'ai tenté différentes approches, en mettant des double quotes, des virgules, en indiquant "text/csv" dans le header, aucune différence. Si vous avez une idée, je prends Merci !

  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
    Si c'est un CSV, il faut un en-tête CSV et pas XLS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Content-type: text/csv");
    header("Content-Disposition: attachment; filename=fichier.csv");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Alors j'ai changé l'entête, mais rien n'y fait. Au moment de télécharger le fichier, plutôt que de le télécharger je fais "Ouvrir avec Excel", et mes données s'affichent avec une seule cellule remplie par ligne. Si je fais "Ouvrir avec le navigateur", encore pire, pas de délimitation de lignes.
    Dois-je dire au client qu'il doit télécharger à chaque fois le fichier ? Ou y-a-t'il une meilleure solution ?

    EDIT : J'ai modifié un peu le code en mettant des tabulations "\t" au lieu de ";", et là ça fonctionne niquel quand on fait Ouvrir avec. Ca ne marche plus quand on fait "Télécharger", mais c'est déjà un début

Discussions similaires

  1. vbs : problème avec une boucle + csv
    Par Macfplus dans le forum VBScript
    Réponses: 3
    Dernier message: 27/05/2013, 11h56
  2. [JBOSS] [Struts] Problème avec une application
    Par Tiercel dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/07/2004, 13h50
  3. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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