[RESOLU] Lecture d'un fichier xlsx

Eléphanteau du PHP | 44 Messages

23 févr. 2022, 17:49

Bonjour à tous,
je me permet de venir vers car voilà, je n'y comprends plus rien...
Je suis sur Laragon, php 7.4, apache 2.4, mysql 5.7 pour l'environnement.
J'ai donc un code php qui va chercher les fichiers dans le répertoire Import (C:\laragon\www\xlsxToCsv\Import\) et qui va les traiter, mais voila mon soucis, il veut absolument 2 fois le même fichier, 1 dans le répertoire Import et l'autre a la racine (C:\laragon\www\xlsxToCsv) et je ne comprend donc pas du tout pourquoi !?
Voici le code:
<?php

// import des fichiers config (connexion a la bdd) et autoload (classe necessaire aux fichiers excel)
require_once "config.php";
require_once "vendor/autoload.php";

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;

$rowError = array();
// verification de la liste des magasins dans le fichier
if ($dir = opendir('C:\laragon\www\xlsxToCsv\Import')) {
    
    while (false !== ($file = readdir($dir))) {
        
        // exclusion de certaines entrées
        if ($file != ".." && $file != "." && $file != "ERREUR" && $file != "IMPORTER" && $file != "ARCHIVES" && $file != "Entete_type.xlsx" && $file != "Thumbs.db") {
            
            //instanciation de l'objet xlsx
            $reader = new Xlsx();

            // ouverture du fichier
            $spreadsheet = $reader->load($file);

            // recuperation de la feuille excel active lors du dernier enregistrement!!!!!!!!!!!!!!
            // exemple: si le dernier enregistrement a ete fait sur la 2eme feuille, c'est celle-ci qui sera lu
            $sheetData = $spreadsheet->getActiveSheet()->toArray();

            // boucle sur chaque ligne non vide
            if (!empty($sheetData)) {
                for ($i = 1; $i < count($sheetData); $i++) {

Eléphanteau du PHP | 44 Messages

23 févr. 2022, 17:54

ah, et en message d'erreur:
pas de fichier: rien et mes echos s'affichent correctement.
1 fichier à la racine: rien non plus et mes echos s'affichent aussi correctement.
1 fichier dans Import\ : Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Reader\Exception: File "S25.xlsx" does not exist et mes echos s’arrêtent juste avant le
$spreadsheet = $reader->load($file);
enfin les 2 fichiers: tout est traité correctement 8-| :?: :shock:
L'illogisme n'est que la logique des autres!

ynx
Mammouth du PHP | 586 Messages

23 févr. 2022, 18:47

Bonjour,

L'erreur indique un problème d'accès au fichier, ne faut-il pas renseigner le chemin si le fichier n'est pas dans le même dossier que le point d'entrée php (racine) ?
$spreadsheet = $reader->load('C:\laragon\www\xlsxToCsv\Import\' . $file);

Eléphanteau du PHP | 44 Messages

23 févr. 2022, 19:06

Bonjour Ynx,
malheureusement ça me donne la même erreur, que voici au complet (au cas où j'aurais loupé un truc):

Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Reader\Exception: File "C:\laragon\www\xlsxToCsv\ImportS25.xlsx" does not exist. in C:\laragon\www\xlsxToCsv\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Shared\File.php:149 Stack trace: #0 C:\laragon\www\xlsxToCsv\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Reader\Xlsx.php(388): PhpOffice\PhpSpreadsheet\Shared\File::assertFile('C:\\laragon\\www\\...', '_rels/.rels') #1 C:\laragon\www\xlsxToCsv\index_xlsxToDb.php(25): PhpOffice\PhpSpreadsheet\Reader\Xlsx->load('C:\\laragon\\www\\...') #2 {main} thrown in C:\laragon\www\xlsxToCsv\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Shared\File.php on line 149
L'illogisme n'est que la logique des autres!

ynx
Mammouth du PHP | 586 Messages

23 févr. 2022, 19:14

Regarde bien le chemin indiqué dans le message d'erreur, il semble que tu as oublié un \ entre le dossier Import et le fichier S25.xlsx.
File "C:\laragon\www\xlsxToCsv\ImportS25.xlsx" does not exist.

Eléphanteau du PHP | 44 Messages

23 févr. 2022, 19:23

ok... bien vu. Un énorme merci Ynx!!!! Tout fonctionne!
L'illogisme n'est que la logique des autres!

Eléphanteau du PHP | 44 Messages

23 févr. 2022, 19:24

Arf, message aux modos, j'ai créé le sujet avec un compte invité, je ne peux pas clore le sujet, désolé!
L'illogisme n'est que la logique des autres!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 févr. 2022, 10:23

Arf, message aux modos, j'ai créé le sujet avec un compte invité, je ne peux pas clore le sujet, désolé!
C'est fait ! :D
Quand tout le reste a échoué, lisez le mode d'emploi...