[RESOLU] Lecture d'un fichier xlsx

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Lecture d'un fichier xlsx

Re: Lecture d'un fichier xlsx

par @rthur » 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

Re: Lecture d'un fichier xlsx

par GuillaumeLM » 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é!

Re: Lecture d'un fichier xlsx

par GuillaumeLM » 23 févr. 2022, 19:23

ok... bien vu. Un énorme merci Ynx!!!! Tout fonctionne!

Re: Lecture d'un fichier xlsx

par ynx » 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.

Re: Lecture d'un fichier xlsx

par GuillaumeLM » 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

Re: Lecture d'un fichier xlsx

par ynx » 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);

Re: Lecture d'un fichier xlsx

par GuillaumeLM » 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:

Lecture d'un fichier xlsx

par GuillaumeLM » 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++) {