
Melakukan impor dan export data dari file Excel ke dalam laravel database adalah pekerjaan yang umumnya sering dilakukan terutama dalam aplikasi perkantoran. Dalam artikel ini, kita akan belajar langkah-langkah Import Export Excel Laravel dengan contoh data-data mahasiswa.
Langkah 1: Install Laravel
Sebelum kita dapat memulai proses impor data, kita perlu memastikan bahwa lingkungan pengembangan Laravel sudah terinstal dengan benar. Jika Anda belum memiliki instalasi Laravel, gunakan perintah berikut:
composer create-project laravel/laravel mahasiswa_excel --prefer-dist
Langkah 2: Buat Database dan Atur file .env
Selanjutnya, kita buat sebuah database di phpmyadmin dengan nama database “mahasiswa_excel“. Buka file .env
lalu ubah DB_DATABASE =mahasiswa_excel.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mahasiswa_excel
DB_USERNAME=root
DB_PASSWORD=
Langkah 3: Membuat Migration
Untuk mempermudah proses membuat tabel dan fieldnya, kita gunakan fitur migration dari laravel menggunakan perintah php artisan make:migration
. Perintah ini akan membuat file migrasi di direktori database/migrations
.
php artisan make:migration create_mahasiswas_table --create=mahasiswas
Buka file migrasi tersebut. Pada method up()
, kita akan mendefinisikan struktur tabel “mahasiswas” beserta kolom-kolom yang dibutuhkan.
public function up()
{
Schema::create('mahasiswas', function (Blueprint $table) {
$table->id();
$table->string('nama');
$table->string('nim')->unique();
$table->string('jurusan');
// Tambahkan field lain yang Anda inginkan di sini
$table->timestamps();
});
}
Setelah selesai mengatur struktur tabel, saatnya menjalankan migrasi untuk membuat tabel “mahasiswas” di database. Gunakan perintah berikut:
php artisan migrate
Langkah 4: Instalasi Paket Laravel Excel & Konfigurasi
Untuk memudahkan proses impor dan ekspor data dari Excel, kita akan menggunakan Laravel Excel package. Package ini menyediakan fitur-fitur yang memungkinkan kita untuk mengimpor dan mengekspor data dari Excel.
Untuk menginstal package ini melalui Composer, gunakan perintah berikut di terminal:
composer require maatwebsite/excel
Setelah instalasi selesai, pastikan kita melakukan konfigurasi package dengan mengedit file config/app.php. Tambahkan service provider dan aliases seperti di bawah ini:
'providers' => ServiceProvider::defaultProviders()->merge([
// ...,
// ...,
// ...,
Maatwebsite\Excel\ExcelServiceProvider::class,
])->toArray(),
'aliases' => Facade::defaultAliases()->merge([
// ...,
// ...,
// ...,
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
])->toArray(),
Langkah 5: Membuat Model
Buat model yang akan digunakan untuk merepresentasikan tabel yang akan diimpor. Anda bisa membuatnya dengan menjalankan perintah:
php artisan make:model MahasiswaModel
Setelah model dibuat, buka file app/Models/MahasiswaModel.php dan lengkapi properti dan aturan yang sesuai untuk tabel database yang akan diimpor:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MahasiswaModel extends Model
{
use HasFactory;
protected $table = 'mahasiswas';
protected $fillable = [
'nama',
'nim',
'jurusan',
];
}
Langkah 6: Membuat Import
Selanjutnya, kita akan membuat import untuk mengimpor data Excel ke database. Jalankan perintah berikut:
php artisan make:import MahasiswaImport
Buka file app/Imports/MahasiswaImport.php dan lengkapi kode berikut:
<?php
namespace App\Imports;
use App\Models\MahasiswaModel;
use Maatwebsite\Excel\Concerns\ToModel;
class MahasiswaImport implements ToModel
{
public function model(array $row)
{
// Sesuaikan dengan atribut-atribut pada model dan kolom-kolom yang ada pada file Excel
return new MahasiswaModel([
'nama' => $row[0],
'nim' => $row[1],
'jurusan' => $row[2],
// ...
]);
}
}
Pastikan Anda telah menyesuaikan atribut pada model dengan kolom-kolom yang ada pada file Excel yang akan diimpor.
Catatan :
Jika muncul error Undefined type ‘Maatwebsite\Excel\Concerns\ToModel’, silahkan reload windows dengan menekan F1 ketikkan Reload Window, lalu Enter.
Langkah 7: Membuat Export
Selain mengimpor data, kita juga ingin memiliki fitur untuk mengekspor data dari database ke file Excel. Buatlah export untuk menghasilkan file Excel dari data MahasiswaModel. Jalankan perintah berikut:
php artisan make:export MahasiswaExport
Buka file app/Exports/MahasiswaExport.php dan lengkapi kode berikut:
<?php
namespace App\Exports;
use App\Models\MahasiswaModel;
use Maatwebsite\Excel\Concerns\FromCollection;
class MahasiswaExport implements FromCollection
{
public function collection()
{
return MahasiswaModel::all();
}
}
Langkah 8: Membuat Tombol Import dan Export
Buat tampilan untuk mengunggah file Excel dan tombol untuk mengekspor data ke Excel. Di dalam direktori resources/views, buat file baru dengan nama excel.blade.php dan isi dengan kode berikut:
<!DOCTYPE html>
<html>
<head>
<title>Impor dan Ekspor Data Excel ke Database Laravel</title>
</head>
<body>
<h2>Impor dan Ekspor Data Excel ke Database Laravel</h2>
@if (session('success'))
<div style="color: green; font-weight: bold;">
{{ session('success') }}
</div>
@endif
<h3>Impor Data</h3>
<form action="{{ route('import.excel') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">Impor Data</button>
</form>
<h3>Ekspor Data</h3>
<a href="{{ route('export.excel') }}">Ekspor Data ke Excel</a>
</body>
</html>
Langkah 9: Membuat Route
Tambahkan route dan controller untuk menangani proses impor dan ekspor data dari file Excel. Buka file routes/web.php dan tambahkan route berikut:
use \App\Http\Controllers\ExcelController;
Route::get('/import-excel', [ExcelController::class, 'index'])->name('import.excel');
Route::post('/import-excel', [ExcelController::class, 'import'])->name('import.excel');
Route::get('/export-excel', [ExcelController::class, 'export'])->name('export.excel');
Langkah 10: Buat Controller
Buat controller ExcelController dengan menjalankan perintah:
php artisan make:controller ExcelController
a. Jika ingin memasukkan langsung ke database
Buka file app/Http/Controllers/ExcelController.php dan lengkapi kode berikut:
<?php
namespace App\Http\Controllers;
use App\Exports\MahasiswaExport;
use App\Imports\MahasiswaImport;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
class ExcelController extends Controller
{
public function index()
{
return view('excel');
}
public function import(Request $request)
{
$file = $request->file('file');
Excel::import(new MahasiswaImport, $file);
return redirect()->back()->with('success', 'Data berhasil diimpor ke database.');
}
public function export()
{
return Excel::download(new MahasiswaExport, 'mahasiswa.xlsx');
}
}
Jika ingin membaca nilai dari cell tertentu
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\IOFactory;
class ExcelController extends Controller
{
public function import(Request $request)
{
$file = $request->file('file');
$spreadsheet = IOFactory::load($file);
// Ambil data dari sel E8
$cellValue = $spreadsheet->getActiveSheet()->getCell('E8')->getValue();
// Tampilkan nilai sel E8
dd($cellValue);
}
}
Baca juga : Panduan Datatables Laravel 10 Yajra
Langkah 11: Jalankan Laravel
Setelah konfigurasi database selesai, Anda dapat menjalankan aplikasi Laravel dengan menjalankan perintah berikut:
php artisan serve
Aplikasi akan dijalankan di server lokal dan dapat diakses melalui browser dengan alamat http://localhost:8000.
Sekarang Anda telah berhasil membuat fitur Import Export Excel Laravel database. Anda dapat mencoba fitur-fitur ini dengan mengakses halaman impor dan ekspor data Excel.
Update: 20 Februari 2024