Udah lama gak bikin post hehe, jadi pada postingan akhir tahun ini saya akan membagikan tutorial seputar Laravel. Mungkin disini kalian mempunyai data yang banyak pada file excel tapi males buat input satu per satu ke dalam aplikasi Laravael, tenang Laravel mempunyai fitur buat import file excel tersebut. Oke simak berikut cara import excel pada Laravel
composer create-project laravel/laravel import_excel
composer require psr/simple-cache:^2.0 maatwebsite/excel
Database
Sekarang kita bikin terlebih dahulu database, disini saya menggunakan database MySQL, dan jangan lupa setting juga pada bagian file .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_9_import_excel
DB_USERNAME=root
DB_PASSWORD=
Kalau sudah langsung kita migrate, caranya dengan mengetik perintah berikut pada terminal
php artisan migrate
Membuat import class
Disini kita perlu membuat import class, table yang kita gunakan nantinya adalah table Users yang otomatis ada saat kita migrate sebelumnya. Jadi untuk membuat class import dapat dilakukan dengan perintah berikut
php artisan make:import UsersImport --model=User
Dan secara otomatis akan ada file UserImport pada folder app/Imports
Sekarang buka file tersebut lalu sesuaikan dengan kode berikut
<?php
namespace App\Imports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\ToModel;
class UsersImport implements ToModel
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new User([
'name' => $row[0],
'email' => $row[1],
'password' => $row[2],
]);
}
}
Membuat UserController
Sekarang kita buat UserController caranya dengan mengetik perintah berikut
php artisan make:controller UserController
buka dan sesuaikan dengan kode berikut
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Imports\UsersImport;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
class UserController extends Controller
{
function index()
{
$users = User::all();
return view('user.index', compact('users'));
}
function import(Request $request)
{
$request->validate([
'file' => 'required|mimes:xls,xlsx'
]);
$file = $request->file('file');
Excel::import(new UsersImport, $file);
return back()->with('success', 'All good!');
}
}
Buka index.blade.php dan sesuaikan dengan kode berikut
<!doctype html>
<html lang="en">
<head>
<title>Title</title>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS v5.2.1 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
</head>
<body>
<header>
<!-- place navbar here -->
</header>
<main>
<div class="container">
<div class="row">
<div class="col-12 mt-5 mb-3">
<form action="/import" method="POST" enctype="multipart/form-data">
@csrf
@method('POST')
<div class="row">
<div class="col">
<input type="file" name="file" id="file" class="form-control" required>
</div>
<div class="col">
<button class="btn btn-success">Import User Data</button>
</div>
</div>
</form>
</div>
@if (session('success'))
<div class="alert alert-success mb-3">
{{ session('success') }}
</div>
@endif
<div class="col-12">
<h1>Users</h1>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">ID</th>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">Created At</th>
<th scope="col">Updated At</th>
</tr>
</thead>
<tbody>
@foreach ($users as $user)
<tr>
<th scope="row">{{ $user->id }}</th>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>{{ $user->created_at }}</td>
<td>{{ $user->updated_at }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</main>
<footer>
<!-- place footer here -->
</footer>
<!-- Bootstrap JavaScript Libraries -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"
integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous">
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.min.js"
integrity="sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz" crossorigin="anonymous">
</script>
</body>
</html>
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', [App\Http\Controllers\UserController::class, 'index'])->name('user.index');
Route::post('/import', [App\Http\Controllers\UserController::class, 'import'])->name('user.import');
Mungkin sekian dulu ya artikel tentang tutorial import file excel pada Laravel 9
Bagi yang mau liat full source dapat dilihat disini ya
https://github.com/padhilahm/import-excel-laravel-9
Comments (2)
Teknik Telekomunikasi
1 year agoApakah ada library atau package khusus yang harus diinstall untuk melakukan import file Excel pada Laravel 9? <a href="https://journals.telkomuniversity.ac.id/">Tel U</a>
Reply CancelAdmin
Penulis 1 year agoUntuk package yg diperlukan itu meatball/excel