Tutorial Laravel #38 : Export Excel Laravel

Export Excel Laravel – Fitur export atau cetak laporan excel merupakan salah satu fitur yang paling penting. bagi teman-teman yang sering membuat aplikasi pesanan dari client, mungkin fitur ini menjadi fitur yang paling banyak diminta oleh client untuk dibuatkan.
Laravel Excel. Setelah sebelumnya di malasngoding.com, pada tutorial dasar laravel untuk pemula sebelumnya, kita telah belajar tentang cara membuat laporan pdf dengan laravel, maka pada tutorial ini kita masih akan membahas tentang export atau cetak laporan pada laravel. kita akan membuat fitur export laporan excel pada laravel.
Export Excel Laravel
Cara membuat laporan excel dengan laravel caranya cukup mudah. yuk simak pembahasan tutorial membuat laporan export excel pada laravel berikut.
Persiapan Database
Sebelum mengikuti tutorial laravel excel ini, ada beberapa persiapan yang kita perlukan. diantaranya kita memerlukan beberapa data sample di sebuah tabel. sehingga data ini lah yang akan kita jadikan sebagai contoh data yang akan kita export ke excel.
Persiapan Koneksi Database Laravel
Karena kita akan menggunakan database pada tutorial ini, pastikan teman-teman sudah mempunyai database. di sini saya membuat sebuah database dengan nama “malasngoding_laravel“.
kemudian kita setting koneksi database laravel. buka file .env. isi username dan password mysqlnya. isi juga nama database nya.
.env
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=malasngoding_laravel DB_USERNAME=root DB_PASSWORD=root |
Oke, kita lanjut ke persiapan contoh data untuk membuat cetak laporan excel dengan laravel.
Persiapan Data
Sebagai contoh laporan excel laravel ini, saya akan membuat sebuah table dengan nama “siswa“. dan mengisi beberapa data siswa ke dalamnya sebagai data contoh.
Untuk membuat data sampelnya, teman-teman bisa membuatnya seperti yang sudah diajarkan sebelumnya yaitu menggunakan seeder dan faker laravel. dan juga menggunakan migration.
Dengan migration kita buat table siswa, dan dengan Faker dan Seeder kita buat data dummy atau data palsunya.
Atau jika teman-teman malas untuk berlama-lama, silahkan teman-teman import saja sql yang sudah saya buat berikut.
Buat table “siswa“, dan import sql berikut.
siswa.sql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
-- phpMyAdmin SQL Dump -- version 4.8.3 -- https://www.phpmyadmin.net/ -- -- Host: localhost:3306 -- Generation Time: Apr 12, 2019 at 07:49 AM -- Server version: 5.7.23 -- PHP Version: 7.2.10 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; -- -- Database: `malasngoding_laravel` -- -- -------------------------------------------------------- -- -- Table structure for table `siswa` -- CREATE TABLE `siswa` ( `id` bigint(20) UNSIGNED NOT NULL, `nama` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `nis` int(11) NOT NULL, `alamat` text COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Dumping data for table `siswa` -- INSERT INTO `siswa` (`id`, `nama`, `nis`, `alamat`, `created_at`, `updated_at`) VALUES (1, 'Malas Noding', 123456, 'Kpg. Otto No. 157, Salatiga 34190, KepR', NULL, NULL), (2, 'Diki Alfarabi hadi', 123457, 'Psr. Wahid No. 119, Langsa 17291, JaTim', NULL, NULL), (3, 'Bagas Santoso', 123458, 'Jr. Monginsidi No. 569, Padangsidempuan 24306, SulBar', NULL, NULL), (4, 'Genta Haryanti', 123459, 'Psr. Gajah Mada No. 696, Mataram 90223, BaBel', NULL, NULL), (5, 'Laravel Excel', 123460, 'Kpg. Suryo Pranoto No. 291, Pekanbaru 76772, Maluku', NULL, NULL), (6, 'Wasis Bakianto Rajasa', 123461, 'Dk. Sadang Serang No. 367, Semarang 32762, SulTra', NULL, NULL), (7, 'Excel Laravel', 123462, 'Ki. Abdul Rahmat No. 1, Banjarbaru 58914, NTB', NULL, NULL), (8, 'Zaenab Winarsih', 123463, 'Dk. Padang No. 638, Bitung 46505, Aceh', NULL, NULL), (9, 'Malika Tina Hasanah', 123464, 'Jln. W.R. Supratman No. 392, Bitung 66104, JaTim', NULL, NULL), (10, 'PHPExcel Laravel', 123465, 'Dk. Imam No. 224, Banjar 37365, PapBar', NULL, NULL), (11, 'Paramita Rahimah', 123466, 'Dk. Qrisdoren No. 548, Surabaya 30826, KalTeng', NULL, NULL), (12, 'Paris Padmasari', 123467, 'Ki. Bacang No. 93, Pariaman 82570, DIY', NULL, NULL), (13, 'Bakijan Mahendra S.H.', 123468, 'Ki. Tambak No. 692, Mataram 65862, Aceh', NULL, NULL), (14, 'Damar Tamba', 123469, 'Dk. Lada No. 238, Bandar Lampung 65062, MalUt', NULL, NULL), (15, 'Bajragin Atmaja Kurniawan', 123470, 'Dk. Karel S. Tubun No. 988, Jayapura 18450, Bali', NULL, NULL), (16, 'Cakrawangsa Sihombing', 123471, 'Jr. Babah No. 536, Bekasi 20996, Aceh', NULL, NULL), (17, 'Najwa Rahimah', 123472, 'Gg. K.H. Maskur No. 475, Cimahi 25535, KalSel', NULL, NULL), (18, 'Jaswadi Hardana Maryadi', 123473, 'Jln. Abang No. 590, Tegal 31208, Lampung', NULL, NULL), (19, 'Shakila Nurdiyanti', 123474, 'Jr. Tangkuban Perahu No. 553, Bitung 27727, SumBar', NULL, NULL), (20, 'Caraka Nardi Permadi', 123475, 'Kpg. Daan No. 258, Bandar Lampung 97410, SulBar', NULL, NULL); -- -- Indexes for dumped tables -- -- -- Indexes for table `siswa` -- ALTER TABLE `siswa` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `siswa` -- ALTER TABLE `siswa` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21; |
Oke kita sudah mempunyai table “siswa“, dan sudah melakukan koneksi database laravel nya juga.

laporan excel dengan laravel
Dan terakhir jangan lupa juga pastikan kita sudah mempunyai model Siswa.php, lengkap dengan pengaturannya.
App/Siswa.php
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Siswa extends Model { protected $table = "siswa"; protected $fillable = ['nama','nis','alamat']; } |
Export Excel Laravel
Untuk membuat export excel laravel, kita harus menginstall package tambahan dari luar. yaitu laravel excel. package laravel excel tersebut adalah package yang dibuat oleh maatwebsite.
Instalasi Package Laravel Excel
Untuk menginstall package laravel excel, kita akan menginstallnya menggunakan composer. ketik perintah berikut pada terminal atau command line.
1 |
composer require maatwebsite/excel |
Tunggu hingga proses instalasinya selesai.

download laravel excel
Oke, selanjutnya kita deklarasikan package laravel excel ini dengan menambahkan ServiceProvider nya di config/app.php.
1 2 3 4 |
'providers' => [ ... Maatwebsite\Excel\ExcelServiceProvider::class, ] |
dan tambahkan juga Facade nya di config/app.php. agar package laravel excel ini terbaca di proyek laravel kita.
1 2 3 4 |
'aliases' => [ ... 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ] |
Seperti pada gambar berikut.

package laravel excel
Kemudian ketik perintah berikut di terminal atau command line. untuk membuat file pengaturan excel di laravel.
1 |
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" |
Ketika menjalankan perintah di atas, laravel akan membuatkan file config/excel.php.

laravel excel
Export Excel Laravel
Selanjutnya kita akan membuat class Export pada proyek laravel kita dengan cara mengetikkan perintah berikut pada terminal atau command line.
1 |
php artisan make:export SiswaExport --model=Siswa |
Perintah di atas bertujuan untuk membuat Export laravel. export nya kita berinama dengan SiswaExport. dan model yang akan kita gunakan adalah model siswa.
Kenapa kita gunakan model Siswa.php ? karena data yang akan kita export ke excel adalah data siswa.
Ketika kita menjalankan perintah di atas, maka laravel akan membuatkan file SiswaExport.php dalam folder app/Exports/.

export excel pada laravel
Ketika kita buka file SiswaExport.php ini, file tersebut sudah berisi fungsi untuk menampilkan data siswa secara otomatis.
app/Exports/SiswaExport.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php namespace App\Exports; use App\Siswa; use Maatwebsite\Excel\Concerns\FromCollection; class SiswaExport implements FromCollection { /** * @return \Illuminate\Support\Collection */ public function collection() { return Siswa::all(); } } |
Sampai di sini semua persiapan untuk membuat export excel dengan laravel sudah selesai.
Buat 2 buah route untuk menampilkan data siswa dan untuk membuat export excel.
routes/web.php
1 2 |
Route::get('/siswa', 'SiswaController@index'); Route::get('/siswa/export_excel', 'SiswaController@export_excel'); |
Route ‘/siswa‘ kita tugaskan menjalankan method index() dalam controller SiswaController.php. dan route ‘/siswa/export_excel‘ kita tugaskan untuk menjalankan method export_excel() dalam controller SiswaController.php.
Buat controller SiswaController.php nya.
1 |
php artisan make:controller SiswaController |
BACA KEMBALI : Cara Membuat Controller Pada Laravel
Kemudian pada controller SiswaController.php ini buat kedua method tadi.
app/Http/Controllers/SiswaController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Siswa; use App\Exports\SiswaExport; use Maatwebsite\Excel\Facades\Excel; use App\Http\Controllers\Controller; class SiswaController extends Controller { public function index() { $siswa = Siswa::all(); return view('siswa',['siswa'=>$siswa]); } public function export_excel() { return Excel::download(new SiswaExport, 'siswa.xlsx'); } } |
Perhatikan pada controller di atas. kita memanggil model siswa dengan use App\Siswa; . karena kita akan mengambil data dari table siswa.
Kemudian kita juga memanggil class laravel excel.
1 2 3 |
use App\Exports\SiswaExport; use Maatwebsite\Excel\Facades\Excel; use App\Http\Controllers\Controller; |
selanjutnya perhatikan pada method index(). pada method index kita hanya menampilkan data siswa ke view siswa.blade.php.
BACA KEMBALI : Menampilkan Data Dengan Eloquent Laravel
buat view baru dengan nama siswa.blade.php.
resources/views/siswa.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<!DOCTYPE html> <html> <head> <title>Export Laporan Excel Pada Laravel</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> </head> <body> <div class="container"> <center> <h4>Export Laporan Excel Pada Laravel</h4> <h5><a target="_blank" href="https://www.malasngoding.com/">www.malasngoding.com</a></h5> </center> <a href="/siswa/export_excel" class="btn btn-success my-3" target="_blank">EXPORT EXCEL</a> <table class='table table-bordered'> <thead> <tr> <th>No</th> <th>Nama</th> <th>NIS</th> <th>Alamat</th> </tr> </thead> <tbody> @php $i=1 @endphp @foreach($siswa as $s) <tr> <td>{{ $i++ }}</td> <td>{{$s->nama}}</td> <td>{{$s->nis}}</td> <td>{{$s->alamat}}</td> </tr> @endforeach </tbody> </table> </div> </body> </html> |
Pada view ini kita hanya menampilkan semua data siswa seperti biasa. dan kita juga membuat tombol “EXPORT EXCEL“.
Ketika tombol export excel tersebut di klik, maka halaman akan dialihkan ke route ‘/siswa/cetak_excel’.
Oke, sekarang perhatikan pada method export_excel() pada controller SiswaController.php.
Untuk membuat laporan excel nya, kita tinggal menggunakan fungsi download() dari Facade Excel.
1 |
return Excel::download(new SiswaExport, 'siswa.xlsx'); |
Pada parameter pertama fungsi ini, kita isi dengan nama export yang ingin kita gunakan, yaitu SiswaExport. pada parameter kedua isi dengan nama file excel yang ingin kita buat. di sini saya memberi nama dengan siswa.xlsx. silahkan bisa teman-teman buat sesuai keinginan.
Hasil
Silahkan jalankan proyek laravelnya.
php artisan serve
dan akses route siswa.
localhost:8000/siswa

Export Excel Laravel
Klik tombol “EXPORT EXCEL”.
Maka file siswa.xlsx akan terdownload secara otomatis.

Export Laporan Excel Pada Laravel
Oke selesai sudah Tutorial Laravel #38 : Export Excel Laravel.
Jika teman-teman ingin membaca dokumentasi lengkap tentang package laravel excel ini, teman-teman bisa membacanya di sini. pada saat tutorial ini dibuat, package laravel excel sudah sampai versi laravel excel 3.1 atau yang terbaru. ada banyak yang bisa kita lakukan dengan package laravel excel ini.
Selanjutnya kita akan belajar membuat import data dari excel ke database dengan laravel.
BACA JUGA : Tutorial Laravel #37 : Membuat Laporan PDF Dengan DOMPDF Laravel
Tutorial Menarik Lainnya

Tutorial Laravel #41 : Action URL Laravel


Tutorial Laravel #40 : Multi Bahasa Localization Laravel


Tutorial Laravel #39 : Import Excel Laravel


[…] tutorial sebelumnya di Tutorial Laravel #38: export excel laravel, kita membuat export excel dengan menggunakan package laravel excel yang dibuat oleh […]
min, biar si excel yang di download jadi rapih, harus pake settingan dimana ya?, soalnya saat d download jadi tidak rapih
Tutorial laravel export ke notepad dong kakak
min itu varibel $siswa dari mana ya?
Permisi bang, kalau mau export dari tag table bisa lewat package ini juga ?
bisa ga si min kita export nya bukan ngambil data dari Model tapi dari stored procedure ?