Import Export Excel Laravel Database (maatwebsite)

Posted on
Cara Import Export Excel Laravel Database Pemula


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