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

PHP & Base de données Discussion :

extraire des donnée d'un fichier excel vers une BDD


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut extraire des donnée d'un fichier excel vers une BDD
    Bonjour.

    je m'exerce sur php (symfony) depuis quelques temps. je me situe plutôt du côté débutant !
    Mais pour ne pas le rester trop longtemps, je fais une application sur la nutrition ( comme exercice ).

    Pour résumer l'application: elle offre la possibilité pour une personne de savoir ce qu'il y a dans son assiette.
    Elle pourra savoir combien de calories fait son plat composé de plusieurs aliments, sa quantité de protéines, lipides, glucides, vitamines, ...
    Le tout sur un repas, un jour, une semaine, ...

    J'ai donc besoin de savoir quelle est la composition nutritionnelle des aliments de base !
    J'ai pour ça le site ciqual. Et ce site partage ses données... avec fichier excel.
    J'aurais préféré une une BDD avec une API !

    Je n'ai pas le choix, je vais devoir extraire ces données et les rentrer dans ma BDD.


    Voici à quoi ressemble le fichier Excel:

    Nom : ciqual.jpg
Affichages : 176
Taille : 75,4 Ko

    Il y a exactement 67 constituants pour chaque aliment ( 67 colonnes) pour 3185 aliments !

    Je ne veux pas tous les constituants de chaque aliments, seulement une trentaine! ( ça fait déjà moins de données...)

    Pour extraire, j'ai entendu parler de la librairie PhpSpreadsheet

    Avec ce code appelé dans mon index.php, je récupère les coordonnées des cellules d'une ligne ( A2, B2, C2, ...) sous forme de tableau.

    Code php : 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
     
    <?php
     
    require __DIR__.'/vendor/autoload.php';
     
    class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {
     
        public function readCell($columnAddress, $row, $worksheetName = '') {
            if ($row >= 2 && $row < 3) {
                return true;
            }
            return false;
        }
    }
     
    function extraction()
    {
        $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xls');
        $reader->setReadFilter( new MyReadFilter() );
        $reader->setReadDataOnly(true);
        $spreadsheet = $reader->load("ciqual_2020.xls");
        $worksheet = $spreadsheet->getActiveSheet();
        $coordinates = $worksheet->getCellCollection()->getCoordinates();
     
        return $coordinates;
    }

    Je pourrai ensuite obtenir les valeurs des cellules (avec une boucle sur les coordonnées ) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $cellValue = $worksheet->getCell($coordinate)->getValue()

    En partant de là je crois avoir compris comment choisir des colonnes qui m'intéressent et je peux faire les 3185 aliments et mettre tout ça dans un tableau.
    (un super tableau d'objets indexés)

    Puis je bouclerai sur ce tableau pour remplir ma table en BDD...

    D'où ma question: je m'y prends correctement ? Ou bien il y a une autre façon de faire ?

    Merci pour vos réponses

    Laurent.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 117
    Points
    43 117
    Par défaut
    Si tu dois faire l'opération one shoot, tu peux importer le fichier excel dans une base de données avec phpmyadmin par exemple
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Si tu dois faire l'opération one shoot
    et dans le cas où vous devez faire cette importation régulièrement, je vous conseille de convertir le fichier tableur au format csv. de cette façon vous n'aurez plus besoin de dépendre d'une bibliothèque pour gérer le format propriétaire qui peut donc changer à n'importe quel moment.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut
    Merci:

    ça fait un sacré bout de temps que j'administre Mysql en ligne de commande...
    J'en avais carrément oublié PhpMyAdmin ! Pourquoi se compliquer la vie !

    Une fois la BDD importée, je peux faire les modifications que je souhaite.

    Je n'oublierai plus, promis !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Extraire des données d'un fichier CSV vers un fichier Excel avec critères
    Par Muzan93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/06/2021, 13h55
  2. Réponses: 1
    Dernier message: 02/06/2014, 19h50
  3. Importer des données d'un fichier Excel vers Javascript
    Par rafiq25 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/01/2008, 15h30
  4. Réponses: 8
    Dernier message: 31/10/2007, 09h10
  5. Réponses: 1
    Dernier message: 14/05/2007, 14h52

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