es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Clase ‘PhpOffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet’ no encontrada en Laravel

En mi proyecto de Laravel he utilizado el PhpOffice Spreadsheet para descargar datos en formato Excel desde una tabla de datos.

Para hacer eso, necesito agregar código en mi controlador, ruta y vista.

Controlador

He utilizado los siguientes espacios de nombres en mi controlador:

<?php

namespace App\Http\Controllers;

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use App\OfferCustomersDataTbl;

public function export($type) {
    $offer_customer_data = OfferCustomersDataTbl::all();
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Id');
    $sheet->setCellValue('B1', 'Name');
    $sheet->setCellValue('C1', 'Email');
    $rows = 2;

    foreach($offer_customer_data as $empDetails){
        $sheet->setCellValue('A' . $rows, $empDetails['id']);
        $sheet->setCellValue('B' . $rows, $empDetails['name']);
        $sheet->setCellValue('C' . $rows, $empDetails['email']);
        $rows++;
    }

    $fileName = "emp.".$type;
    if($type == 'xlsx') {
        $writer = new Xlsx($spreadsheet);
    } else if($type == 'xls') {
        $writer = new Xls($spreadsheet);
    }
    $writer->save("export/".$fileName);
    header("Content-Type: application/vnd.ms-excel");
    return redirect(url('/')."/export/".$fileName);
}

Ruta

Route::get('/export/{type}', 'OfferCustomersDataController@export');

Vista

<a href="{{ url('/') }}/export/xlsx" class="btn btn-info">Exportar a .xlsx</a>

Pero cuando hago clic en el botón Descargar como Excel para descargarlo, siempre muestra un error:

Clase ‘PhpOffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet’ no encontrada

Pero esa clase Spreadsheet está en esa ubicación, lo he revisado varias veces.

No puedo entender cuál es el problema.

¿Alguien puede ayudarme por favor? Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error indica que no se pudo encontrar la clase Spreadsheet. Esto puede deberse a algunas razones:

    1. Espacio de nombres incorrecto: Asegúrese de que el espacio de nombres sea correcto y coincida con la ubicación de la clase Spreadsheet.
    2. Problema de carga automática: Verifique si el cargador automático está configurado correctamente y puede cargar las clases requeridas.

    3. Problema de sensibilidad a mayúsculas y minúsculas: PHP distingue entre mayúsculas y minúsculas, por lo que asegúrese de que el nombre de la clase esté escrito y capitalizado correctamente.

    4. Problema de permisos de archivo: Verifique si el archivo que contiene la clase Spreadsheet tiene los permisos de lectura requeridos.

    Revisa estas cosas y ve si puedes encontrar el problema.

Comments are closed.