laravel datatables export data | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel datatables export data

Monday, April 13, 2026

laravel datatables export data

🔗 Seri Artikel 49/50 ⚡ Laravel 📊 DataTables 📄 Export Data

Export Data ke Excel & PDF
dari DataTables di Laravel

Belajar cara export excel pdf datatables laravel dengan mudah — dari instalasi package hingga tombol download yang beneran bisa diklik. Siap gaspol?

⏱️
Estimasi Baca
12 Menit
🎯
Level
Intermediate
📅
Update
2025
📚
Seri
50 Artikel Laravel

Pernah nggak, kamu susah payah bikin tabel data keren di web, terus klien atau dosen minta "bisa di-download ke Excel nggak?" — dan kamu langsung panik? Tenang, kamu nggak sendirian. Fitur export excel pdf datatables laravel ini adalah salah satu permintaan paling umum di proyek web, tapi sering banget bikin bingung developer pemula.

Kabar baiknya: Laravel punya ekosistem package yang luar biasa. Dengan Maatwebsite Laravel Excel dan Barryvdh Laravel DomPDF, kamu bisa tambahkan fitur download Excel dan PDF ke DataTables kamu dalam hitungan menit — bukan jam, bukan hari.

Di artikel ke-49 dari Seri Belajar Laravel Lengkap ini, kita bakal kupas tuntas step by step, dari instalasi package, setup controller, hingga tombol export yang beneran berfungsi. Let's code!

🧠 Konsep Kunci

Export data di konteks web berarti mengubah data dari database (yang tampil di tabel) menjadi file yang bisa diunduh — seperti .xlsx (Excel) atau .pdf. Di Laravel, proses ini dilakukan di sisi server: controller mengambil data → diproses package → menghasilkan file → dikirim ke browser sebagai response download.

📤 Kenapa Fitur Export Excel & PDF di DataTables Laravel Itu Wajib Ada?

Bayangkan kamu punya toko online dan memiliki 10.000 data transaksi di web app-mu. Data itu tampil rapi di DataTables Laravel. Tapi tiba-tiba bagian keuangan minta laporan bulanan untuk diolah di Excel, atau manajemen minta laporan PDF untuk dicetak dan ditanda-tangani.

Di sinilah fitur export data dari DataTables jadi hero. Tanpa fitur ini, user harus copy-paste manual — yang jelas nggak mungkin untuk data ribuan baris. Fitur export bukan cuma "nice to have", ini adalah kebutuhan nyata di hampir semua aplikasi enterprise.

🔥 Fakta Menarik

Package Maatwebsite Laravel Excel sudah diunduh lebih dari 100 juta kali di Packagist. Artinya hampir semua project Laravel komersial menggunakannya. Ini bukan sekedar package biasa — ini sudah jadi standar industri!

Pilih Package yang Tepat: Perbandingan Cepat

Package Format Output Keunggulan Install
Maatwebsite Excel .xlsx, .xls, .csv Styling Excel, Multiple Sheet, Formula maatwebsite/excel
Barryvdh DomPDF .pdf HTML to PDF, Blade template support barryvdh/laravel-dompdf
Maatwebsite Excel .csv Ringan, kompatibel semua spreadsheet maatwebsite/excel
Barryvdh Snappy .pdf (kualitas tinggi) Berbasis wkhtmltopdf, CSS support penuh barryvdh/laravel-snappy

📊 Step-by-Step: Export Excel dari DataTables Laravel

Anggap export Excel itu seperti "mencetak foto" dari database kamu ke dalam format spreadsheet. Yang kita butuhkan: data dari model, sebuah "Export Class" sebagai cetakannya, dan route yang memicunya. Berikut langkah lengkapnya:

1

Install Package Maatwebsite Excel

Buka terminal di root project Laravel kamu dan jalankan perintah berikut:

composer require maatwebsite/excel

Setelah selesai, publish config-nya:

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
2

Buat Export Class

Jalankan artisan command untuk membuat class export:

php artisan make:export UsersExport --model=User

File akan dibuat di app/Exports/UsersExport.php. Edit isinya:

<?php

namespace App\Exports;

use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class UsersExport implements FromCollection, WithHeadings
{
    public function collection()
    {
        return User::select('id', 'name', 'email', 'created_at')->get();
    }

    public function headings(): array
    {
        return ['ID', 'Nama', 'Email', 'Tanggal Daftar'];
    }
}
💡 Tips

Gunakan WithHeadings interface agar baris pertama file Excel secara otomatis berisi header kolom yang readable. Tanpanya, Excel akan menggunakan nama field database langsung — yang kadang nggak user-friendly.

3

Buat Controller & Route untuk Export Excel

Di controller, tambahkan method export:

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;

// Di dalam class controller:
public function exportExcel()
{
    return Excel::download(
        new UsersExport(),
        'data-users-' . date('Y-m-d') . '.xlsx'
    );
}

Tambahkan route di routes/web.php:

Route::get('/users/export-excel', [UserController::class, 'exportExcel'])
    ->name('users.export.excel');
4

Tambahkan Tombol Export di Blade (View)

Di file Blade tempat DataTables kamu berada, tambahkan tombol download:

<div class="mb-3 d-flex gap-2">
  <a href="{{ route('users.export.excel') }}"
     class="btn btn-success">
    📊 Export Excel
  </a>
  <a href="{{ route('users.export.pdf') }}"
     class="btn btn-danger">
    📄 Export PDF
  </a>
</div>

📄 Export PDF dari DataTables Laravel dengan DomPDF

Kalau export Excel itu ibarat "menyalin" data ke spreadsheet, maka export PDF lebih seperti "mencetak" tampilan yang sudah didesain. DomPDF mengambil template Blade HTML kamu, lalu mengkonversinya menjadi dokumen PDF yang bisa langsung dibagikan atau dicetak.

1

Install Package DomPDF

composer require barryvdh/laravel-dompdf
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
2

Buat Blade Template untuk PDF

Buat file resources/views/exports/users-pdf.blade.php:

<!DOCTYPE html>
<html><head>
<style>
  body { font-family: Arial, sans-serif; font-size: 12px; }
  h2  { text-align: center; color: #6366f1; }
  table { width: 100%; border-collapse: collapse; }
  th { background: #6366f1; color: white; padding: 8px; }
  td { border: 1px solid #ddd; padding: 8px; }
  tr:nth-child(even) { background: #f9fafb; }
</style></head><body>
  <h2>Data Users</h2>
  <p>Dicetak: {{ date('d/m/Y H:i') }}</p>
  <table>
    <thead><tr>
      <th>No</th><th>Nama</th><th>Email</th><th>Daftar</th>
    </tr></thead>
    <tbody>
      @foreach($users as $i => $user)
      <tr>
        <td>{{ $i+1 }}</td>
        <td>{{ $user->name }}</td>
        <td>{{ $user->email }}</td>
        <td>{{ $user->created_at->format('d/m/Y') }}</td>
      </tr>
      @endforeach
    </tbody></table>
</body></html>
3

Method Controller & Route untuk Export PDF

use Barryvdh\DomPDF\Facade\Pdf;

public function exportPdf()
{
    $users = User::select('id','name','email','created_at')->get();

    $pdf = Pdf::loadView('exports.users-pdf', compact('users'))
               ->setPaper('a4', 'landscape');

    return $pdf->download('data-users-'.date('Y-m-d').'.pdf');
}
Route::get('/users/export-pdf', [UserController::class, 'exportPdf'])
    ->name('users.export.pdf');
Insight Penting

Method download() langsung mengirim file ke browser. Kalau kamu mau menampilkan PDF di browser (bukan langsung download), ganti dengan stream(). Keduanya menerima nama file sebagai parameter pertama.

🔗 Integrasi Export Excel & PDF dengan DataTables Server-Side

Kalau kamu menggunakan DataTables Server-Side (seperti yang kita bahas di artikel sebelumnya), ada perbedaan penting: tombol export tidak boleh hanya mengambil data yang tampil di halaman, melainkan harus mengambil seluruh data yang sedang aktif terfilter dari database.

Solusinya adalah meneruskan parameter filter (search, sort) yang aktif ke URL export. Begini caranya:

🔍 Analisis: Export Semua Data vs Data Terfilter
✅ Export Semua Data
  • Simple, tidak perlu handle filter
  • Cocok untuk laporan lengkap
  • Query langsung ke Model
⚡ Export Data Terfilter
  • UX lebih baik, ekspor sesuai konteks
  • Butuh passing parameter search ke URL
  • Perlu query builder yang fleksibel

Tambahkan JavaScript ini di halaman DataTables kamu untuk membuat tombol export yang "sadar filter":

// Ambil nilai search dari input DataTables
function exportWithFilter(type) {
    const search = $('input[type=search]').val();
    const baseUrl = type === 'excel'
        ? '{{ route("users.export.excel") }}'
        : '{{ route("users.export.pdf") }}';

    window.location.href = baseUrl + '?search=' + encodeURIComponent(search);
}

// Panggil dari tombol:
// <button onclick="exportWithFilter('excel')">Export Excel</button>

Di controller, tangkap parameter search tersebut:

public function exportExcel(Request $request)
{
    $search = $request->query('search', '');

    return Excel::download(
        new UsersExport($search),
        'users-' . date('Y-m-d') . '.xlsx'
    );
}
⚠️ Perhatian

Untuk data yang sangat besar (> 50.000 baris), gunakan queued export dari Maatwebsite Excel agar proses berjalan di background job dan tidak timeout. Cukup implement interface ShouldQueue di Export Class kamu.

🎯

Kesimpulan

Implementasi export excel pdf datatables laravel ternyata tidak serumit yang dibayangkan! Kuncinya ada tiga hal utama:

01

Install Maatwebsite Excel untuk export .xlsx dan Barryvdh DomPDF untuk export .pdf.

02

Buat Export Class untuk Excel dan Blade template untuk PDF, lalu hubungkan ke controller dan route.

03

Untuk DataTables Server-Side, teruskan parameter filter ke URL export agar hasilnya konsisten dengan tampilan tabel.

Ini adalah artikel ke-49 dari Seri 50 Artikel Belajar Laravel — kita sudah hampir finish! Artikel terakhir akan merangkum semuanya dengan studi kasus CRUD lengkap. Kalau ada pertanyaan atau kamu sudah berhasil coba, langsung drop di kolom komentar ya! 👇

Tags:

#Laravel #PHP #DataTables #ExportExcel #ExportPDF #MaatwebsiteExcel #DomPDF #Tutorial #WebDevelopment

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux