Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #39: Import Excel dengan Laravel

Tentu, ini artikel yang Anda minta:


 

 

Setelah membahas cara ekspor data ke Excel, kini saatnya kita mempelajari kebalikannya: mengimpor data dari file Excel ke dalam aplikasi Laravel. Mengimpor data adalah fitur krusial yang memungkinkan pengguna mengunggah data secara massal, seperti daftar produk, user, atau data penjualan, tanpa harus memasukkan satu per satu. Untuk tugas ini, kita akan kembali menggunakan package yang sama, Laravel Excel (Maatwebsite/Laravel-Excel).

Dalam tutorial Laravel ke-39 ini, kita akan membahas cara mengonfigurasi dan menggunakan Laravel Excel untuk mengimpor data dari file .xlsx atau .csv ke database Anda.


 

1. Menginstal Laravel Excel

 

Jika Anda sudah mengikuti Tutorial #38, Anda tidak perlu melakukan langkah ini lagi. Namun, jika ini pertama kalinya Anda menggunakan Laravel Excel, instal terlebih dahulu melalui Composer:

Bash

composer require maatwebsite/excel

Setelah instalasi selesai, Laravel Excel akan terdeteksi secara otomatis oleh Laravel.


 

2. Membuat Kelas Import

 

Sama seperti ekspor, Laravel Excel menggunakan “Import Class” untuk mendefinisikan bagaimana data akan dibaca dari file Excel.

Gunakan perintah Artisan untuk membuat kelas import baru:

Bash

php artisan make:import UsersImport --model=User

Perintah ini akan membuat file app/Imports/UsersImport.php yang terhubung dengan model User.

 

Memodifikasi Kelas Import

 

Buka file app/Imports/UsersImport.php dan modifikasi seperti contoh di bawah ini. Kita akan menggunakan interface ToModel untuk mengimpor setiap baris data menjadi model.

PHP

<?php

namespace App\Imports;

use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow; // Untuk mengabaikan baris header

class UsersImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new User([
            'name'     => $row['name'],
            'email'    => $row['email'],
            'password' => Hash::make($row['password']),
        ]);
    }
}

Dalam contoh ini:

  • ToModel: Interface ini mengharuskan kita mengimplementasikan metode model() yang akan dipanggil untuk setiap baris data di file Excel. Kita membuat objek User baru dari data $row dan mengembalikannya.
  • WithHeadingRow: Interface ini sangat penting. Ini memberitahu Laravel Excel untuk mengabaikan baris pertama (header) dan menggunakan nama kolom dari header tersebut (misalnya ‘name’, ’email’) sebagai kunci array $row.

Penting: Nama kunci array $row (misalnya ['name']) harus persis sama dengan nama kolom di baris header file Excel Anda.


 

3. Membuat Controller dan Form

 

Sekarang, kita perlu membuat formulir untuk mengunggah file Excel dan sebuah controller untuk memproses unggahan tersebut.

 

Membuat Form HTML

 

Buat view Blade baru, misalnya resources/views/import.blade.php, dengan formulir unggah file:

HTML

<!DOCTYPE html>
<html>
<head>
    <title>Import Users</title>
</head>
<body>
    <h1>Import Data Pengguna</h1>

    @if (session('status'))
        <div class="alert alert-success">
            {{ session('status') }}
        </div>
    @endif

    <form action="{{ route('users.import') }}" method="POST" enctype="multipart/form-data">
        @csrf
        <label for="file">Pilih file Excel (.xlsx atau .csv):</label><br>
        <input type="file" name="file" id="file" required><br><br>
        <button type="submit">Import</button>
    </form>
</body>
</html>

Perhatikan atribut enctype="multipart/form-data" yang wajib ada untuk mengunggah file.

 

Membuat Controller dan Route

 

Buat sebuah controller baru jika belum ada:

Bash

php artisan make:controller UserController

Kemudian, modifikasi app/Http/Controllers/UserController.php seperti di bawah ini:

PHP

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Imports\UsersImport; // Impor kelas import yang telah kita buat
use Maatwebsite\Excel\Facades\Excel; // Impor facade Excel

class UserController extends Controller
{
    public function showImportForm()
    {
        return view('import');
    }

    public function import(Request $request)
    {
        // Validasi file yang diunggah
        $request->validate([
            'file' => 'required|mimes:xlsx,csv,xls',
        ]);

        try {
            // Impor file menggunakan kelas UsersImport
            Excel::import(new UsersImport, $request->file('file'));

            return redirect()->back()->with('status', 'Data pengguna berhasil diimpor!');
        } catch (\Exception $e) {
            return redirect()->back()->with('status', 'Terjadi kesalahan saat mengimpor: ' . $e->getMessage());
        }
    }
}

Terakhir, definisikan rute di routes/web.php:

PHP

use App\Http\Controllers\UserController;

Route::get('/users/import-form', [UserController::class, 'showImportForm'])->name('users.import.form');
Route::post('/users/import', [UserController::class, 'import'])->name('users.import');

 

4. Proses Import dan Fitur Lanjutan

 

Sekarang, jika Anda mengakses URL /users/import-form, Anda akan melihat formulir untuk mengunggah file. Pilih file Excel Anda dan klik “Import”. Laravel akan membaca data, membuat model User untuk setiap baris, dan menyimpannya ke database Anda.

Laravel Excel juga memiliki fitur canggih lainnya:

  • Validasi Data: Anda bisa menambahkan validasi di dalam kelas import Anda.
  • Batching: Mengimpor data dalam potongan-potongan kecil untuk menghemat memori.
  • Chunking: Memproses file besar secara efisien.

Dengan menguasai fitur impor ini, Anda dapat menambahkan fungsionalitas yang kuat pada aplikasi Anda, memungkinkan pengguna untuk mengelola data dengan lebih fleksibel dan efisien.


Catatan: Pastikan struktur kolom di file Excel Anda cocok dengan kunci array di kelas import Anda. Jika tidak, proses impor akan gagal.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5
Gemini_Generated_Image_m9wyvsm9wyvsm9wy

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek