Cara Export Data ke Excel dengan PHP dan MySQL (PhpSpreadsheet)

Fitur “export ke Excel” sangat berguna untuk laporan dan analisis data. Artikel ini membahas cara export data ke Excel dengan PHP dan MySQL — cara cepat tanpa library, dan cara profesional dengan PhpSpreadsheet.

Alur Export Data ke Excel
Alur Export Data ke Excel

Cara 1: Cepat Tanpa Library

Cara paling sederhana memakai header khusus agar browser mengunduh tabel HTML sebagai file Excel:

<?php
require "koneksi.php";

header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=data-produk.xls");

echo "<table border='1'>";
echo "<tr><th>Nama</th><th>Harga</th></tr>";
$data = $koneksi->query("SELECT nama, harga FROM produk");
while ($row = $data->fetch_assoc()) {
    echo "<tr>";
    echo "<td>" . htmlspecialchars($row["nama"]) . "</td>";
    echo "<td>" . $row["harga"] . "</td>";
    echo "</tr>";
}
echo "</table>";
?>

Cocok untuk kebutuhan cepat. Kekurangannya: file bukan .xlsx asli, dan Excel kadang memberi peringatan format.

Cara 2: Profesional dengan PhpSpreadsheet

Untuk file .xlsx asli dengan format rapi, gunakan library PhpSpreadsheet. Install lewat Composer:

composer require phpoffice/phpspreadsheet

Lalu buat file export:

<?php
require "vendor/autoload.php";
require "koneksi.php";

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// judul kolom
$sheet->setCellValue("A1", "Nama");
$sheet->setCellValue("B1", "Harga");

// isi data dari database
$baris = 2;
$data = $koneksi->query("SELECT nama, harga FROM produk");
while ($row = $data->fetch_assoc()) {
    $sheet->setCellValue("A$baris", $row["nama"]);
    $sheet->setCellValue("B$baris", $row["harga"]);
    $baris++;
}

// kirim sebagai unduhan
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename=produk.xlsx");
$writer = new Xlsx($spreadsheet);
$writer->save("php://output");
exit;
?>

Kesalahan Umum

  • Ada output/spasi sebelum header — menyebabkan file rusak. Pastikan tidak ada echo/spasi sebelum header().
  • “Class not found” — path vendor/autoload.php salah atau library belum di-install.

Kesimpulan

Untuk kebutuhan cepat, cara header Excel sudah cukup. Untuk file profesional dengan format, styling, dan banyak sheet, gunakan PhpSpreadsheet. Fitur export ini melengkapi aplikasi Anda dengan kemampuan laporan yang dibutuhkan dunia kerja.

Referensi: untuk pendalaman, kunjungi dokumentasi resmi PHP (php.net).

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

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