exportar archivos Excel y CSV en Laravel 9

exportar archivos Excel

Cómo importar y exportar archivos Excel y CSV en Laravel 9

En este tutorial, veremos cómo importar y exportar archivos Excel y CSV en Laravel 9 usando el paquete Maatwebsite\Excel.


Laravel 9 es un marco PHP popular que facilita la creación de aplicaciones web robustas y escalables.

Una de las características importantes de cualquier aplicación web es la capacidad de importar y exportar datos en diferentes formatos.

Esto puede ser particularmente útil cuando necesita transferir datos de un sistema a otro, o cuando necesita almacenar datos para su uso posterior.

El paqueteeMaatwebsite\Excel es un paquete popular que facilita el trabajo con archivos Excel y CSV en Laravel.

Proporciona una API simple que puede usar para importar y exportar datos con solo unas pocas líneas de código.

Este paquete también admite múltiples formatos de archivo, por lo que puede elegir el formato que mejor se adapte a sus necesidades.

Paso 1: Instale el paquete

Para comenzar, debe instalar el paquete Maatwebsite\Excel. Puedes instalarlo usando el compositor:

composer require maatwebsite/excel

Paso 2: crea un modelo

En este paso, debe crear un modelo que represente los datos que desea importar y exportar.

Por ejemplo, si desea importar y exportar productos, puede crear un modelo de “Producto”.

php artisan make:model Product

Paso 3: Crear una migración

A continuación, debe crear una migración que cree la tabla de “productos” en su base de datos.

Puede usar el siguiente comando para crear una migración:

php artisan make:migration create_products_table

 

Si desea generar una migración de base de datos cuando genera el modelo, puede usar la opción --migration-m en el paso 2

 

Luego, abra el archivo de migración creado y agregue el siguiente código:

public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description');
$table->double('price');
$table->timestamps();
});
}

Finalmente, ejecute el siguiente comando para aplicar la migración:

php artisan migrate

Paso 4: crea un controlador

Ahora, necesita crear un controlador que maneje las operaciones de importación y exportación.

Puede crear un controlador usando el siguiente comando:

php artisan make:controller ProductController

Paso 5: Importar datos

En este paso, agregará el código que importa los datos del archivo Excel o CSV a la tabla de products en su base de datos.

Abra el archivo ProductController y agregue el siguiente código:

//...
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\Models\Product;

class ProductController extends Controller
{
public function index()
{
return view('import');
}
//...
public function import(Request $request)
{
$file = $request->file('file');
Excel::import(new ProductsImport, $file);
return back()->with('success', 'Products imported successfully.');
}
}

En este código, primero recupera el archivo cargado del objeto de solicitud.

Luego, importa datos a ProductsImport utilizando el método de import de la fachada de Excel.

Esta clase amplía la interfaz Maatwebsite\Excel\Concerns\ToModel, que proporciona los métodos necesarios para importar datos desde un archivo Excel o CSV a una tabla de base de datos.

php artisan make:import ProductsImport --model=Product

Esto creará un nuevo archivo llamado ProductsImport.php en el directorio app/Imports. La opción --model=Product especifica el nombre de la clase de modelo que se usará para almacenar los datos importados.

use Maatwebsite\Excel\Concerns\ToModel;
use Illuminate\Support\Facades\Hash;
use App\Models\Product;

class ProductsImport implements ToModel
{
public function model(array $row)
{
return new Product([
'name' => $row[0],
'description' => $row[1],
'price' => $row[2],
]);
}
}

Este código implementa la clase ProductsImport e implementa el método de model, que toma una matriz de datos para cada fila como argumento y devuelve una nueva instancia de modelo de Product con los datos de esa fila.

Paso 6: exportar datos

En este paso, agregará el código que exporta los datos de la tabla de products en su base de datos a un archivo Excel o CSV. Abra el archivo ProductController y agregue el siguiente código:

//....
class ProductController extends Controller
{
//...
public function export()
{
return Excel::download(new ProductsExport, 'products.xlsx');
}
}

En este código, utiliza el método de download de la fachada de Excel para descargar los datos de la clase ProductsExport. La clase ProductsExport es responsable de preparar los datos que deben exportarse. Para crear esta clase, puede usar el siguiente comando:

php artisan make:export ProductsExport --model=Product

Este comando creará una nueva clase de exportación en el directorio app/Exports. Abra este archivo y agregue el siguiente código:

use Maatwebsite\Excel\Concerns\FromCollection;
use App\Product;
class ProductsExport implements FromCollection
{
public function collection()
{
return Product::all();
}
}

En este código, implementa la interfaz FromCollection, que requiere que implemente el método de collection. En este método, devuelve la colección de todos los productos usando el método all del modelo Product.

Paso 7: Agregar rutas

Finalmente, debe agregar rutas para las operaciones de importación y exportación. Abra el archivo routes/web.php y agregue el siguiente código:

Route::get('/import', [ProductController::class,"index"]);
Route::post('/import', [ProductController::class,"import"]);
Route::get('/export', [ProductController::class,"export"]);

En este código, agrega dos rutas para la operación de importación, una para la solicitud GET y otra para la solicitud POST.

La solicitud GET se usa para mostrar el formulario para cargar el archivo, y la solicitud POST se usa para manejar la carga del archivo e importar los datos.

También agrega una ruta para la operación de exportación, que devuelve el archivo Excel o CSV con los datos.

Paso 8: Crear la vista

Finalmente, debe crear una vista que tendrá el formulario para importar el archivo y un botón para exportar los datos.

<form action="{{ url('/import') }}" method="post" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">Import</button>
</form>

<a href="{{ url('/export') }}">Export</a>

¡Eso es todo! Ahora tiene una aplicación Laravel 9 completa que puede importar y exportar archivos Excel y CSV.

  • Puede personalizar este código según sus requisitos.
  • Puede agregar validación a los datos importados y también puede agregar un mensaje de confirmación antes de exportar los datos.

Conclusión

  • En este tutorial, aprendiste a importar y exportar archivos Excel y CSV en Laravel 9 usando el paquetee Maatwebsite\Excel.
  • Este paquete proporciona una API simple y fácil de usar que permite importar y exportar datos con solo unas pocas líneas de código.
  • Puede usar este paquete para manejar la transferencia de datos entre diferentes sistemas o para almacenar datos para su uso posterior.
  • Con la ayuda de este paquete, puede simplificar su proceso de importación y exportación de datos y mejorar la eficiencia de su aplicación web.

Espero que este tutorial lo ayude en sus proyectos de Laravel. ¡Feliz codificación!


Gracias por llegar hasta aquí, si encuentras esto útil no olvides dejar un👍🏼y suscribirse para recibir más contenido.

Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Node.js y AWS Lambda:

Recent Post