Laravel 6

Error Class 'PhpOffice\PhpSpreadSheet\Spreadsheet' not found

Avatar de Gelal
Gelal

Bonjour,

Je suis débutant en laravel et j'aimerais utiliser Phpspreadsheet pour un petit projet. Le seul soucis c'est que bien qu'ayant suivi à la lettre toutes les indications de phpspreadsheet, laravel me renvoie une erreur : Error Class 'PhpOffice\PhpSpreadSheet\Spreadsheet' not found.

Voici le contenu de mon fichier route :

<?php
 
use Illuminate\Support\Facades\Route;
 
Route::get('hello_world', 'HelloWorldController@helloworld');

Le contenu du controleur auquel je fais appel :

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadSheet\Spreadsheet;
use PhpOffice\PhpSpreadSheet\Writer\Xlsx;
 
class HelloWorldController extends Controller
{
    public function helloworld ()
    {
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
 
        $sheet->setCellValue('A1', 'Hello World !!');
 
        $writer = new Xlsx ($spreadsheet);
        $writer->save('helloworld.xlsx');
    }
}

J'ai installé Phpspreadsheet dans mon projet à l'aide de la commande:composer require phpoffice/phpspreadsheet Je me suis même assuré d'optimiser les ressources en faisant à la fin de l'installation un :composer dump-autoload

J'ai vérifié dans le psr-4 de mon autoload si la ressource est bien chargée et effectivement je la retrouve

// autoload_psr4.php @generated by Composer
 
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
 
return array(
.... 
'PhpOffice\\PhpSpreadsheet\\' => array($vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet'), 
....
);

Je ne sais pas trop où j'ai foiré. Pouvez vous m'aider à éclairer ma lanterne?

PS : J'utilise Laravel 7.29

Posté il y a 2 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Commence par virer ton require 'vendor/autoload.php';

Ensuite, enlève la troisième majuscule à \PhpSpreadSheet\ pour avoir \PhpSpreadsheet\ et tu sera bon.

Edit: si tu utilise VSCode je te conseille l'extension PHP Namespace Resolver (je ne sais pas si c'est dispo aussi sur d'autres IDE). Pour trouver ton problème, j'ai viré tes use, mis le curseur sur ton new Spreadsheet(), un petit Ctrl + Alt + i et ton use est créé tout seul avec le bon chemin. En suite, pareil pour ton new Xlsx()

Posté il y a 2 mois
Avatar de Gelal
Gelal

Salut CinqiuièmeDimension,

J'arrive pas à croire que je suis bloqué depuis 2 jours sur ce truc juste à cause d'une majuscule. Je ne sais plus combien de fois j'ai tout relu, inspecté, supprimé, réécris et au final c'est juste la majuscule qui bloquait.

Je me sens con.

Merci beaucoup pour ta précieuse réponse. Je vais essayer d'implémenter ton astuce avec le namespace plutard.

Encore merci.

Posté il y a 2 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Ca nous arrive a tous. Et ca fait mal à chaque fois

Posté il y a 2 mois

Vous ne pouvez pas répondre à ce sujet.