img-news
Programming
Import Excel File Dengan Laravel Excel
Oleh Administrator 20 Januari 2023

Terkadang kita butuh meng-import data yang ada di dalam file excel ke dalam database kita, nah pada kali ini saya mau sharing cara import data excel di Laravel dengan menggunakan Laravel Excel.

Okey langsung aja ya kita mulai.. Oia saya anggap kalian sudah menginstall modul Laravelnya ya.. kalau belum, kalian bisa cari-cari referensinya dari website resmi laravel disini. https://laravel.com/docs/9.x/installation

 

Membuat Database

Yang pertama kita lakukan adalah membuat database yang akan digunakan untuk menyimpan data yang telah kita import. Untuk nama databasenya terserah kalian, tapi kalian harus cocokan dengan file .env-nya, setelah itu jalankan query dibawah ini untuk membuat tabel peserta.

CREATE TABLE `peserta` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(50) DEFAULT NULL,
  `no_wa` varchar(15) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

Menginstall maatwebsite/excel Package

Untuk memakai library Laravel Excel, kita harus menginstallnya terlebih dahulu dengan menjalankan composser.

composer require maatwebsite/excel.

Laravel Excel adalah salah satu library yang bisa di gunakan untuk print, export, import data excel pada Laravel.

 

Menambah Konfigurasi di app.php

Untuk bisa memakai library Laravel Excel, kalian harus menambahkan beberapa konfigurasi.

Buka file app.php di folder app/config, lalu pada bagian providers tambahkan

Maatwebsite\Excel\ExcelServiceProvider::class,

dan pada bagian aliases tambahkan

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

 

Membuat View

Buat view yang akan digunakan untuk meng-upload file excel kalian, misalnya kita beri nama peserta.blade.php, dan masukkan code seperti dibawah.

<form method="POST" action="{{ route('upload-peserta.store') }}" enctype="multipart/form-data">
    @csrf
    
   	<div>
      	File : <input type="file"name="file">
   	</div>
   	<br>
   	<div>
   		<button type="submit" >Kirim</button>
   	</div>
</form>

<div style="margin-top: 20px">
	List Data
	<table style="margin-top: 10px; text-align: left">
		<tr>
			<th width="100px">Nama</th>
			<th width="100px">No. WA</th>
			<th width="100px">Email</th>
		</tr>
		@foreach($data as $row)
		<tr>
			<td>{{ $row->nama }}</td>
			<td>{{ $row->no_wa }}</td>
			<td>{{ $row->email }}</td>
		</tr>
		@endforeach
	</table>
</div>

Pada bagian list data, disitu kita akan menampilkan data yang berhasil kita import.

 

Membuat Route

Buat route untuk menampilkan halaman upload yang sudah dibuat sebelumnya. Untuk route halaman upload dan list data contohnya seperti dibawah.

Route::get('peserta', [PesertaController::class, 'index']);

dan untuk route import data contohnya seperti dibawah.

Route::post('upload-peserta', [PesertaController::class, 'store'])->name('upload-peserta.store');

Dan jangan lupa kalian load controllernya dulu dengan memasukkan code di bawah use Illuminate\Support\Facades\Route; dengan memasukkan code berikut.

use App\Http\Controllers\PesertaController;

 

Membuat Model

Buat model yang akan digunakan untuk mendefinisikan table kalian, dengan menjalankan composser.

php artisan make:model Peserta

file model Peserta.php akan terbuat di dalam folder app/Models. Lalu masukkan code berikut.

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Peserta extends Model
{
    use HasFactory;

    protected $table = 'peserta';
    protected $primaryKey = 'id';
    protected $guarded = [];
    public $timestamps = false;
}

 

Membuat Import Class

Buat file class import yang akan digunakan untuk meng-import data excel kita ke dalam database dengan menjalankan composser.

php artisan make:import ImportPeserta --model=Peserta

File ImportExcel.php akan terbuat didalam folder app/Imports. Lalu masukkan code berikut.

namespace App\Imports;

use App\Models\Peserta;
use Maatwebsite\Excel\Concerns\ToModel;

class ImportPeserta implements ToModel
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {   
        return new Peserta([
            'nama'    => $row[0],
            'no_wa'   => $row[1],
            'email'   => $row[2],
        ]);
    }
}

 

Membuat Controller

Buat controller yang akan digunakan untuk mengolah data yang kita import, dengan menjalankan composser

php artisan makes: controller PesertaController

buka file PesertaController.php di dalam folder app/Http/Controllers lalu isikan code berikut.

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Imports\ImportPeserta;
use App\Models\Peserta;
use Maatwebsite\Excel\Facades\Excel;

class PesertaController extends Controller
{
    public function index(){
    	$data = Peserta::all();
    	return view('peserta', compact('data'));
    }

    public function store(Request $request){
    	$import = Excel::import(new ImportPeserta(), $request->file);

    	if($import){
    		return redirect('peserta');
    	}
    }
}

 

Nah.. jika sudah selesai semua, silahkan kalian coba.. semoga berhasil.