C’est une pratique courante sur les applications web d’extraire des données via CSV, que ce soit pour récupérer des statistiques ou bien faire des sauvegardes de données, je vais vous montrer comment ceci est réalisable facilement avec Symfony via un Controller.
Comment générer le fichier CSV avec un Controller de Symfony
Pour générer le fichier, il faut le construire comme dans l’exemple suivant, en définissant les colonnes du fichiers CSV avec des points virgules (;) et des sauts de ligne (\n).
<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; class HomeController extends AbstractController { /** * @Route("/home", name="home") */ public function home() { //Nom des colonnes en première lignes // le \n à la fin permets de faire un saut de ligne, super important en CSV // le point virgule sépare les données en colonnes $myVariableCSV = "Nom; Prenom; Age;\n"; //Ajout de données (avec le . devant pour ajouter les données à la variable existante) $myVariableCSV .= "John; Doe; 26;\n"; //Si l'on souhaite ajouter un espace $myVariableCSV .= " ; ; ; \n"; //Autre donnée $myVariableCSV .= "Chuck; Norris; 80;\n"; //On donne la variable en string à la response, nous définissons le code HTTP à 200 return new Response( $myVariableCSV, 200, [ //Définit le contenu de la requête en tant que fichier Excel 'Content-Type' => 'application/vnd.ms-excel', //On indique que le fichier sera en attachment donc ouverture de boite de téléchargement ainsi que le nom du fichier "Content-disposition" => "attachment; filename=Tutoriel.csv" ] ); }
Récupération du fichier CSV
Lors de l’accès à la route /home comme sur l’exemple, une fenêtre d’enregistrement de fichier vous permettra de récupérer le fichier.
Vous n’avez plus qu’à ouvrir votre fichier CSV avec Excel ou autre logiciel.
Aperçu du fichier dans Excel
Vous pouvez voir que nos colonnes sont bien définies, que nous avons les données souhaitées au bon endroit avec un saut de ligne entre les deux.
Vous savez désormais comment générer un fichier CSV avec Symfony.
Merci d’avoir lu, n’hésitez pas à partager !