Tutorial Membuat Import & Export Excel di Laravel #4 : Proses Export - Halo teman-teman semuanya, di artikel sebelumnya kita sudah membahas bagaimana cara membuat import data excel dan memasukkannya ke database di Laravel 6.
Di artikel kali ini kita semua akan belajar bagaimana cara membuat export data dari database ke dalam format excel di Laravel 6.
Langkah 1 - Membuat File Export
Langsung saja kita mulai, silahkan teman-teman jalankan perintah dibawah ini
php artisan make:export UsersExport --model=User
Jika berhasil, teman-teman akan menemukan file baru dengan nama UsersExport.php
di dalam folder app/Exports, kurang lebih isi dari UsersExport.php
seperti berikut ini :
<?php
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return User::all();
}
}
Langkah 2 - Menambah Fungsi Export di Controller
Selanjutnya, silahkan teman-teman buka controller UsersController.php
di dalam folder app/Http/Controllers dan tambahkan kode berikut ini dibawah namespace.
use App\Exports\UsersExport;
Dan tambahkan fungsi dibawah ini tepat dibawah fungsi import
public function export()
{
return Excel::download(new UsersExport(), 'users.xlsx');
}
Dan jika kita tulis secara lengkap file UsersController.php
kurang lebih seperti berikut ini :
<?php
namespace App\Http\Controllers;
use App\Exports\UsersExport;
use App\Imports\UsersImport;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
public function index()
{
$users = User::latest()->get();
return view('data_users', compact('users'));
}
public function import(Request $request)
{
$this->validate($request, [
'file' => 'required|mimes:csv,xls,xlsx'
]);
$file = $request->file('file');
// membuat nama file unik
$nama_file = $file->hashName();
//temporary file
$path = $file->storeAs('public/excel/',$nama_file);
// import data
$import = Excel::import(new UsersImport(), storage_path('app/public/excel/'.$nama_file));
//remove from server
Storage::delete($path);
if($import) {
//redirect
return redirect()->route('users.index')->with(['success' => 'Data Berhasil Diimport!']);
} else {
//redirect
return redirect()->route('users.index')->with(['error' => 'Data Gagal Diimport!']);
}
}
public function export()
{
return Excel::download(new UsersExport(), 'users.xlsx');
}
}
Sekarang silahkan teman-teman cari kode berikut ini di dalam file resources/views/data_users.blade.php
<a href="" class="btn btn-primary btn-md">EXPORT</a>
Dan ubahlah menjadi seperti berikut ini
<a href="{{ route('users.export') }}" class="btn btn-primary btn-md">EXPORT</a>
Langkah 3 - Menambahkan Route
Terakhir kita akan menambahkan sebuah route untuk proses export data excelnya. Tambahkan kode berikut ini di dalam routes/web.php
Route::get('/users/export', 'UsersController@export')->name('users.export');
Sekarang kita bisa mencoba melakukan proses export datanya, silahkan teman-teman klik tombol export dan jika berhasil maka akan ada sebuah download file dengan format excel dan jika dibuka, kurang lebih hasilnya seperti berikut ini
KESIMPULAN
Kita telah belajar bagaimana cara membuat proses export dengan Laravel 6. Jika teman-teman memiliki pertanyaan atau kebingungan saat mencobanya, silahkan bisa berkomentar di bawah ini artikel ini.
Terima Kasih