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.
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.
Mantab, ditunggu export/import yg make headingnya mas amirul
Siap 😀
Gmn kalau data kolum d Excel nya ada tanggal lahir dengan format dd/mm/yyyy.
Nah pas mau insert ke DB via laravel nya gmn?
Thank You