Laravel

Insertar imagen en Laravel-Excel

Aprenderemos a Insertar imagen en Laravel-Excel. Para insertar imágenes en un archivo Excel usando Laravel-Excel, puedes hacerlo con la biblioteca Maatwebsite\Excel junto con PhpSpreadsheet.

Aquí tienes los pasos para insertar una imagen en un archivo Excel:

1. Instalar Laravel-Excel

Si aún no lo tienes instalado, usa:

composer require maatwebsite/excel

2. Crear una Exportación

Ejecuta el siguiente comando para generar una clase de exportación:

php artisan make:export ProductsExport --model=Product

Esto generará un archivo en app/Exports/ProductsExport.php.

3. Modificar la Exportación para Incluir Imágenes

Edita app/Exports/ProductsExport.php:

namespace App\Exports;
use App\Models\Product;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\FromCollection;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;

class ProductsExport implements FromCollection, WithDrawings
{
    public function collection()
    {
        return Product::select('id', 'name', 'price', 'image_path')->get();
    }
    public function drawings()
    {
        $drawings = [];
        $products = Product::select('id', 'image_path')->get();
        foreach ($products as $index => $product) {
            if ($product->image_path && file_exists(public_path($product->image_path))) {
                $drawing = new Drawing();
                $drawing->setName('Product Image');
                $drawing->setDescription('Product Image');
                $drawing->setPath(public_path($product->image_path)); // Ruta de la imagen
                $drawing->setHeight(50); // Altura en píxeles
                $drawing->setCoordinates('D' . ($index + 2)); // Columna y fila

                $drawings[] = $drawing;
            }
        }
        return $drawings;
    }
}

4. Exportar el Archivo Excel

En tu controlador (app/Http/Controllers/ExportController.php), agrega:

use App\Exports\ProductsExport;
use Maatwebsite\Excel\Facades\Excel;


public function export()
{
    return Excel::download(new ProductsExport, 'products.xlsx');
}

5. Definir la Ruta en web.php

use App\Http\Controllers\ExportController;

Route::get('/export-products', [ExportController::class, 'export']);

Ahora, al visitar /export-products, se generará un archivo Excel con imágenes en la columna D.

Mostrar más

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.
Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad