Feuille Excel vers base sql

Eléphant du PHP | 80 Messages

28 sept. 2018, 21:50

Bonjour,

J'utilse la class PHPEXCEL afin de récupérer un ficher Excel, le lire, ligne par ligne, cellule par cellule, pour intégrer les données dans une base sql.
Je sais qu'elle est considérée comme DEPRECATED, et promis, je me lancerai sur un autre outil, mais actuellement, j'ai besoin de cela.. :) :)

Dans le principe, je lis chaque ligne de la feuille excel, je prends chaque cellule de la ligne, et au final je fais un INSERT de la ligne que j'ai récupéré, etc.. jusqu'à la fin de la feuille !

J'utilise ce code pour cela :

Code : Tout sélectionner

foreach($sheet->getRowIterator() as $row) { // On boucle sur les cellules de la ligne foreach ($row->getCellIterator() as $cell1) { $cell=$cell1->getFormattedValue(); if ($cell==Null or strlen($cell)==0) {$cell=' ';} $value=$value."\"".$cell."\","; } }
Le souci, apparemment, c'est qu'en faisant "foreach ($row->getCellIterator() as $cell1) ", si la cellule est vide, il passe à la prochaine, sans la considérer comme vide et onc ne traite même pas ce qu'il y a entre parenthèse.

Il apparait donc qu'à la fin, il manque des informations à intégrer lorsque je fais un
INSERT INTO table VALUES ($value)

Pourriez-vous m'aider à trouver la méthode pour récupérer à minima une info $cell="", lorsqu'une cellule est vide ?

En vous remerciant de l'aide apportée, toujours précieuse.

Stéphane

Mammouth du PHP | 881 Messages

29 oct. 2018, 00:47

Je soupçonne que ta fonction reconnaît les indices des cellules,
ainsi la cellule C23 doit avoir des indices « C » et « 23 »
si tel est le cas, la prochaine cellule de cette ligne n'étant qu'en colonne F devrait te retourner « F » et « 23 »
Je ne connais pas la fonction PHPEXCEL, mais une façon simple de vérifier cela est de faire apparaître tes indices dans tes foreach de la manière suivante :
foreach ($row->getCellIterator() as $indice => $cell1) 
Commence par vérifier les valeurs d'indice, à savoir si elles correpondent à ce que je décris ci-haut ou non.
si oui, tu n'auras alors qu'à combler les vides par des valeurs nulles

ou encore

emplis d'abord ton tableau de résultats de valeurs nulles ou reconnaissables (la fonction array_fill http://php.net/manual/fr/function.array-fill.php )
Ensuite, faire lire ton fichier excel en replaçant les valeurs nulles (ou reconnaissables) par les valeurs lues dans tes boucles foreach
Soyez artisans de paix