Bonjour,

J'ai besoin d'un coup de main pour mon application. J'ai besoin que mes utilisateurs déposent des listes de noms (pouvant aller jusqu'à 2000 noms) sur ma future applications. Ce dépôt sera ensuite exploité de la manière suivante :

  • mise à jour des infos sur les personnes déjà existantes dans ma BDD.
  • enregistrement des nouvelles personnes.
  • utilisation de ces personnes pour le reste de mon application.

J'utilise doctrine2 et symfony3 (mais ma question peut être valable pour la v2) car j'ai beaucoup de relations entre mes entités, et doctrine2 gère bien ce genre de chose.

J'ai lu que l'import de fichier excel (ou cvs) n'était pas vraiment prévu par doctrine.

Je fais appel à votre aide pour savoir si vous connaissez des méthodes automatisées pour l'utilisation de fichier excel dans une application (sans que je passe par ma console comme ici http://www.jesuisundev.fr/massive-import-via-symfony2-command-depuis-fichier-csv/#disqus_thread)

Je vous remercie très sincèrement pour votre aide future.

Nans

3 réponses


nans
Auteur

Je réponds moi même au sujet. J'ai suivi un tuto et voilà ce que ça donne : (je précise qu'il faut faire un formulaire avant, permettant le dépôt de fichier avec method="POST" et ENCTYPE="multipart/form-data"

    public function addlistAction(Request $request)
    {
        if (isset($_POST['submit'])) {        

            $file=$_FILES['file']['tmp_name'];

            $handle = fopen($file, "r");
                while(($fileop = fgetcsv($handle,1000, ";")) !== false){
                $em = $this->getDoctrine()->getManager();

                $personne = new Personne();       
                $personne->setName($fileop[0]);
                $personne->setLastname($fileop[1]);
                $personne->setAge($fileop[2]);
                $verif = $em->getRepository("\structureBundle\Entity\Personne")->findOneBy(array('name' => $fileop[0],'lastname' => $fileop[1]));                  
                    if($verif){
                        echo 'personne déjà existante';
                    }else{    

                    $em = $this->getDoctrine()->getManager();
                    $em->persist($personne);
                    $em->flush();
                    }
                }
            $request->getSession()->getFlashBag()->add('success', 'Liste enregistrée.');
            return $this->redirect($this->generateUrl('Personne_Inscrite', array('id' => $personne->getId())));
        }     
    return $this->render('structureBundle:Personne:addlist.html.twig');
    }

Salut,
tu n'aurais pas pu utiliser file_get_contents plutôt ?
C'est quand même plus simple à utiliser que le fopen il me semble.
En plus tu n'utilises pas la Request passée en argument, du bon vieux code procédural,
regardes ce lien qui pourra te donner des astuces :
http://symfony.com/doc/current/cookbook/controller/upload_file.html
Bon courage

Bonjour,
Quel framework utiliser vous pour gerer un fichier xlsX ?
J'ai besoin de poser (puis d'importer) des fichiers xlsX (la dépose est simple mais le traitement...)
J'aurais aussi besoin d'exporter des données de ma base vers un fichier xlsX avec mises en formes etc...

Merci d'avance