
Okay, setelah sebelumnya kita membuat sebuah Fitur dimana kita bisa Export Pdf dari Laravel, kali ini kita akan membuat Fitur untuk Import Excel pada Laravel.
Nah, Fitur ini tentunya akan memudahkan kita untuk menginput Data yang banyak kedalam Sistem kita, jadi kita tidak harus memasukkan data tersebut satu-persatu. Cukup satu kali Import, dan semua Data sudah ter-input di Database kita.
Penjelasan Sistem Import Excel pada Laravel
Untuk membuat sistem Import ini, ada beberapa hal yang akan kita lakukan. Pertama, kita akan menginstal Projek Laravel kita, setelah itu kita siapkan Database dan Tampilannya. Setelah selesai Database dan Tampilannya, kita tinggal install sebuah Liblary untuk Import Excel ini dan di-setting sesuai kebutuhan kita.
Praktek
Disini kita akan mempraktekkan sedari instalasi, untuk detail dari instalasi sampai membuat Database bisa kalian lihat di Atikel-artikel sebelumnya.
Instalasi Laravel via Composer
Disini kita bisa install Laravel 8 kita, untuk nama dari Projek yang kita install ini bebas sesuai keinginan Teman-teman. Setelah selesai install, jangan lupa langsung buka Folder dimana Projek Laravel ini kita install. Bisa install dengan syntax dibawah ini.
composer create-project laravel/laravel:^8.0 import-excel
jangan lupa setelah selesai instalasi jalankan Laravel nya ya dengan php artisan serve
Install Liblary
Setelah selesai melakukan instalasi Laravel, berikutnya kita akan menginstall Liblary untuk Sistem Import Excel kita. Kalian bisa melihat detail dokumentasi dari Liblary ini disini docs.laravel-excel.com/3.1/getting-started/installation.html. Langsung saja, instalasi dengan syntax dibawah ini
composer require maatwebsite/excel
Setelah selesai instalasi, buka file config/app.php lalu tambahkan 2 syntax dibawah ini didalam providers dan aliases
'providers' => [
Maatwebsite\Excel\ExcelServiceProvider::class,
]
'aliases' => [
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
Setelah itu, kalian bisa menjalankan syntax dibawah ini untuk membuat sebuah config file khusus untuk excel yhang kalian import nanti. File nya akan bernama excel.php
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
Buat Database
Berikutnya, tentu kita akan membuat dan setting Database untuk mealkukan import Excel pada Laravel kita. Lansgung saja pertama buat Database dulu dengan nama data_karyawan

Pastikan kalian mengatur .env kalian agar connect ke database yang sudah kita buat
Setelah selesai membuat Database, berikutnya kita atur Model, Controller, View dan Migrations Database nya.
Setting Model, dan Migrations
Berikutnya, kita akan setting Model kita. Tapi sebelum setting jelas kita harus membuat Model terlebih dahulu. Model yang akan kita buat ini nantinya akan disertai dengan Controller dan Migrations.
Pastikan teman-teman sudah install Exstensi Laravel Artisan lalu kalian cukup klik Ctrl + Shift + P. Lalu pilih >Make Model, Setelah itu buat Nama Model Employee, setelah itu akan ada pilihan untuk membuat Migrations, Resource, dan Factory? Kita pilih Yes saja. Setelah itu kita sudah memiliki Migrations, Model, dan Controller yang kita butuhkan.
Disini kita akan mulai setting Model terlebih dahulu, cukup tambahkan syntax protected $guarded = ['id'] saja.
class Employee extends Model
{
use HasFactory;
protected $guarded = ['id'];
}
Setelah itu, kita setting migrations kita. Disini kita akan membuat Data Karyawan (Employee) ini, cukup buat berisi Nama dan Pekerjaan saja
public function up()
{
Schema::create('employees', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('works');
$table->timestamps();
});
}
Nah, apabila sudah jangan lupa jalankan syntax untuk migrasi Database kita dengan syntax
php artisan migrate
Setting Import
Nah, sekarang kita akan terfokus kepada File yang akan kita gunakan untuk Import, File import ini kurang lebih seperti File yang akan kita akses agar Sistem Import Excel pada Laravel kita berjalan.
Pertama, buat terlebih dahulu dengan syntax
php artisan make:import EmployeeImport --model=Employee
Setelah itu kalian akan mendapatkan sebuah File baru bernama EmployeeImport.php, buka File itu lalau tambahkan syntax didalam return new Employee jadi seperti ini
return new Employee([
'name' => $row[0],
'works' => $row[1]
]);
Setting View
Setelah selesai mensetting Import, berikutnya kita kan setting Tampilan atau View. Ditampilan ini akan berisi dua Hal, yang pertama adalah tabel untuk menampilkan Data, dan yang kedua adalah Form untuk Menginputkan Data. Sekarang, buat file index.blade.php didalam views
index.blade.php
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>Import Excel</title>
</head>
<body>
<div class="container mt-5">
<h1 class="mt-5 display-4">Table</h1>
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Work As</th>
</tr>
</thead>
<tbody>
@foreach ($employees as $item)
<tr>
<td>{{ $item->name }}</td>
<td>{{ $item->works }}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="row">
<div class="col-sm-3">
<form action="/" method="post" enctype="multipart/form-data">
@csrf
<input type="file" name="excel" class="form-control" placeholder="Recipient's username"
aria-label="Recipient's username" aria-describedby="button-addon2">
<button class="btn btn-primary mt-3" type="submit" id="button-addon2">Import</button>
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous">
</script>
</body>
</html>

Setting Controller
Nah di Controller ini, kita akan membuat 2 Fungsi. Pertama fungsi untuk menampilkan Tampilan kita, yang kedua adalah fungsi untuk mengakses EmployeeImport kita. Kurang lebih akan seperti ini
public function index()
{
return view('index', [
'employees' => Employee::all()
]);
}
public function import(Request $request)
{
Excel::import(new EmployeeImport, $request->excel);
return redirect('/');
}
Setting Web.php
Terakhir yang harus kita setting adalah file routes/web.php, didalam File ini kita akan mengakses link untuk Menampilkan data menggunakan get dan mengirim data menggunakan post, jangan lupa diarahkan ke Fungsi Controller yang kita butuhkan.
Route::get('/', [EmployeeController::class, 'index']);
Route::post('/', [EmployeeController::class, 'import']);
Penggunaan
Sekarang kita tinggal mempraktekkan Sistem import excel pada Laravel kita. Ada hal yang harus diperhatikan dalam import excel pada Laravel ini, yaitu isi dari File Excel yang kita Import.
Didalam File Excel yang kita Import, akan berbentuk tabel, dengan detail Row sesuai dengan EmployeeImport kita. Kalau dilihat di EmployeeImport memiliki 2 Row, pertama untuk name, kedua untuk works, detialnya seperti ini

Jadi Row A untuk name, dan Row B untuk works. Pastikan saat ingin Import tidak salah Row ya.
Selanjutnya tinggal lakukan Import File ini
