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 : 499
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 le