Lenguaje PHP

Importar archivo de Excel en Laravel

Importar archivo de Excel en Laravel. En este tutorial, aprenderemos a importar datos a un archivo de Excel usando Laravel. Detallaremos 8 pasos esenciales para lograr la importación.

En la mayoría de aplicaciones web, a veces necesitamos implementar la importación de datos de archivos de hojas de cálculo de Excel para insertar datos masivos en la base de datos MySQL y mostrarlos en un CRUD para que el usuario pueda tomar decisiones con esa información.

Pasos para importar archivo de Excel en Laravel

A continuación, trabajaremos con 8 pasos para poder importar un archivo de Excel usando el Framework Laravel.

  • Apertura un proyecto Laravel
  • Crear una tabla MySQL
  • Hacer la conexión a la base de datos
  • Utilice el paquete Maatwebsite
  • Gestionar archivo de controladores
  • Implementar Ver archivo
  • Establecer la ruta del controlador
  • Ejecute la aplicación Laravel

¿Qué recursos usaremos para importar Excel en Laravel?

Usaremos el paquete Maatwebsite para implementar la importación de datos de Excel. Cubriremos este tutorial paso a paso para instalar el paquete Maatwebsite e implementar la importación de datos de archivos de Excel a la base de datos MySQL usando Laravel.

Primer paso: Apertura un proyecto Laravel

Primero crearemos el proyecto import_excel_laravel ejecutando el siguiente comando con compostura.

composer create-project — prefer-dist laravel/laravel import_excel_laravel

Segundo paso: crear una tabla MySQL

Crearemos una tabla de la base de datos MySQL de nombre «customer» para insertar los datos del archivo de Excel y mostrarlos en alguna ventana del sistema Laravel.

CREATE TABLE `customer` (
`id` int(11) NOT NULL,
`name` varchar(250) NOT NULL,
`gender` varchar(30) NOT NULL,
`City` varchar(250) NOT NULL,
`Country` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE `customer`
ADD PRIMARY KEY (`id`);
ALTER TABLE `customer`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

Tercer paso: Hacer la conexión a la base de datos

Una vez que tengamos la base de datos con la tabla «customer» importada en MySQL, haremos cambios en el archivo config/database.php para definir la configuración de la conexión de la base de datos. Aquí hemos definido la base de datos como laravel y el usuario como root con contraseña en blanco.

...............
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
...............

Cuarto paso: Utilice el paquete Maatwebsite

Para que funcione correctamente el sistema se necesita instalar el paquete Maatwebsite para importar datos de archivos de Excel usando Laravel. Usaremos el siguiente comando en consola para instalar este paquete.

composer require maatwebsite/excel

Una vez superado el paso anterior necesitaremos crear el archivo config/app.php para registrar este paquete en nuestra aplicación Laravel. Tendremos que definir proveedores y alias.

<?php
return [
........
'providers' => [
.......
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
........

'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
];

Quinto paso: Implementar archivo de controladores

Crearemos el archivo de controlador ImportExcel.php para manejar la solicitud http para importar datos. En este archivo, manejaremos la importación de datos de archivos de Excel con el paquete Maatwebsite y luego manejaremos para insertar datos de Excel en la tabla de la base de datos MySQL.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use Excel;
class ImportExcel extends Controller {
function index(){
$customerData = DB::table('customer')->orderBy('id', 'DESC')->get();
return view('import_excel', compact('customerData'));
}
function import(Request $request) {
$this->validate($request, [
'select_file' => 'required|mimes:xls,xlsx'
]);
$filePath = $request->file('select_file')->getRealPath();
$customerData = Excel::load($filePath)->get();
if($customerData->count() > 0) {
foreach($customerData->toArray() as $key => $value) {
foreach($value as $row){
$insertData[] = array(
'name' => $row['name'],
'gender' => $row['gender'],
'city' => $row['city'],
'country' => $row['country']
);
}
}
if(!empty($insertData)){
DB::table('customer')->insert($insertData);
}
}
return back()->with('success', 'Excel Data Imported successfully.');
}
}

Sexto paso: Implementar Ver archivo

Crearemos el archivo import_excel.blade.php para implementar la carga de archivos con el formulario POST y mostrar los datos importados en la página.

<!DOCTYPE html>
<html>
<head>
<title>phpzag.com : Demo Import Excel File in Laravel</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div role="navigation" class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<button data-target=".navbar-collapse" data-toggle="collapse" class="navbar-toggle" type="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="http://www.phpzag.com" class="navbar-brand">PHPZAG.COM</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="http://www.phpzag.com">Home</a></li>
</ul>
</div>
</div>
</div>
<br />
<div class="container">
<h2>Example: Import Excel File in Laravel</h2>
<br />
@if(count($errors) > 0)
<div class="alert alert-danger">
Upload Validation Error<br><br>
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if($message = Session::get('success'))
<div class="alert alert-success alert-block">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>{{ $message }}</strong>
</div>
@endif
<form method="post" enctype="multipart/form-data" action="{{ url('/import_excel/import') }}">
{{ csrf_field() }}
<div class="form-group">
<table class="table">
<tr>
<td width="40%" align="right"><label>Select File for Upload</label></td>
<td width="30">
<input type="file" name="select_file" />
</td>
<td width="30%" align="left">
<input type="submit" name="upload" class="btn btn-primary" value="Upload">
</td>
</tr>
<tr>
<td width="40%" align="right"></td>
<td width="30"><span class="text-muted">.xls, .xslx</span></td>
<td width="30%" align="left"></td>
</tr>
</table>
</div>
</form>
<br />
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Customer Data</h3>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-bordered table-striped">
<tr>
<th>Name</th>
<th>Gender</th>
<th>City</th>
<th>Country</th>
</tr>
@foreach($customerData as $customer)
<tr>
<td>{{ $customer->name }}</td>
<td>{{ $customer->gender }}</td>
<td>{{ $customer->city }}</td>
<td>{{ $customer->country }}</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
</div>
</body>
</html>

Setimo paso: Establecer la ruta del controlador

En este paso necesitaremos establecer la ruta del método del controlador en el archivo route/web.php.

<?php
.................
Route::get('/import_excel', 'ImportExcel@index');
Route::post('/import_excel/import', 'ImportExcel@import');

Octavo paso: Ejecute la aplicación Laravel

Finalmente, ejecutaremos el siguiente comando para ejecutar nuestra aplicación Laravel.

php artisan serve

Este comando ejecutará la aplicación Laravel en la siguiente URL en el navegador.

http://127.0.0.1:8000/import_excel

Conclusión

Hemos creado un ejemplo para importar ficheros Excel hacia MySQL usando el Potente Framework Laravel PHP y librerías que manejan el Excel.

Además, para lograr el objetivo debemos de cumplir los 8 pasos descritos en el artículo. Sin embargo, para trabajar con Laravel se necesita conocer el manejo de la consola de Windows por ejemplo u otro programa similar.

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!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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. Más información
Privacidad