Tanggal :3 Desember 2020
Import Excel di Laravel

Membuat Import Excel di Laravel dengan Mudah

Assalamualaikum Warohmatulloh Wabarokatuh, melanjutkan tulisan Export Excel di Laravel dalam tulisan ini kita akan pelajari bagaimana membuat Import Excel di Laravel masih menggunakan package Laravel Excel.

Kadang kala kita dihadapkan dalam kondisi dimana klien kita sudah memiliki data dalam bentuk Excel. Kemudian klien tersebut ingin membuat prosesnya menjadi otomatis. Maka mereka meminta bantuan ke programmer agar membuatkan program untuk mereka dengan data yang mereka miliki.

Pada kondisi tersebut, kita sebagai programmer harus menyediakan fitur untuk impor data tersebut agar bisa masuk ke dalam database yang kita buat.

Membuat Fitur Import

Baiklah, karena pada tulisan sebelumnya kita sudah berhasil membuat file Excel dengan fitur Export yang kita buat. Maka pada tulisan ini kita akan gunakan file tersebut sebagai contoh data yang akan kita masukkan ke dalam database kita.

Langsung aja kita buat class untuk Import.

php artisan make:import UserImport --model=User

File hasil perintah tersebut dapat kita temukan di app/Imports/UserImport.php. Sekarang mari kita tambahkan dd($row); untuk mengecek isi data yang akan kita kirim.

<?php

namespace App\Imports;

use App\User;
use Maatwebsite\Excel\Concerns\ToModel;

class UserImport implements ToModel
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        dd($row);
        return new User([
            //
        ]);
    }
}

Kemudian salin file users.xlsx hasil export ke dalam folder public. Kemudian pada UserController tambahkan fungsi untuk import.

<?php

namespace App\Http\Controllers;

use App\Exports\UserExport;
use App\Imports\UserImport;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;

class UserController extends Controller
{
    public function import()
    {
        $row = Excel::import(new UserImport, 'users.xlsx');

        return redirect('/');
    }
}

Setelah selesai dengan controller. Sekarang mari kita daftarkan route di routes/web.php, tambahkan kode ini.

Route::get('user/import/', 'UserController@import');

Setelah itu jalankan php artisan serve jika kawan – kawan menggunakan built in webserver. Akses http://localhost:8000/user/import maka akan muncul tampilan seperti ini.

Import Excel di Laravel
Data dari file users.xlsx

Oke, dengan seperti ini kita bisa mengetahui susunan data yang dihasilkan, pada tabel users kita butuh memasukkan data name, email, password.

Mari kita sesuaikan dengan kebutuhan kita pada class UserImport menjadi seperti ini.

<?php

namespace App\Imports;

use App\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;

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

Pada kode di atas, kita menambahkan kode untuk memasukkan data sesuai field database dengan array. Sesuaikan dengan index masing – masing yang sudah kita ketahui sebelumnya.

Kita menggunakan index angka pada kasus yang kita miliki karena file users.xlsx kita tidak memiliki heading untuk masing – masing data.

Hapus semua data pada tabel users, kemudian akses http://localhost:8000/user/import. Setelah proses selesai, cek data yang masuk pada tabel users.

Sekian pembahasan tentang Import Excel di Laravel, selanjutnya mungkin kita akan bahas :

  • Export & Import dengan data yang memiliki heading agar untuk datanya lebih jelas.
  • Membuat tampilan tabel data disertai fungsi Export & Import.

Wassalamualaikum Warohmatulloh Wabarokatuh.

Ilustrasi logo excel dari pngtree.com.

Halo semuanya, saya Amirul seoarang Web Developer, suka membuat konten pembelajaran berupa artikel, video tutorial maupun podcast, saya juga suka makan dan foto makanan.

2 Comments

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *