Membuat Fungsi Download Laporan Menggunakan PHP

Buat: 06/17/2013 - 14:17
Membuat Fungsi Download Laporan Menggunakan PHP

Pada umumnya klien meminta ada laporan yang dapat didownload dalam berbagai format antara lain spreadsheet (.xls) dan portable data format (.pdf). Untuk membuat laporan sederhana dalam bentuk tabel, mulailah dengan memulai dari hal yang sederhana yaitu membuat tampilannya di html.

Download Laporan sebagai File XLS

Dari tampilan html berikan header yang menyatakan file tersebut adalah file excel dan tambah juga header untuk download, bukan buka di browser.

<?php
ob_start();

$s='';
if($_GET['xls'])
{
    header('Content-type: application/vnd.ms-excel');
}
else
{
    $s.="<a href='?xls=down'>klik untuk buka dalam bentuk excel</a>";
}

$s.="<table>";
for($i=0;$i<5;$i++)
{
    $s.="\n<tr>";
    for($j=0;$j<3;$j++)
    {
        $p=$i*120+$j+5;
        $s.="\n\t<td>".$p."</td>";
    }
    $s.="\n</tr>";
}
$s.="</table>";

print $s;
ob_end_flush();
?>
header('Content-type: application/vnd.ms-excel');

perintah inilah yang memerintahkan halaman yang kamu buka menjadi excel atau didownload sebagai excel.

Namun ada satu kekurangan dari script ini. Yaitu kamu akan mendapatkan bahwa ekstensi file yang didownload adalah .php. Untuk mengatasi hal ini tambahkan code berikut.

header('Content-Disposition: attachment; filename="'.$filename.'"');

Download Laporan dengan Filter

Untuk fitur membuat laporan, tidak selalu klik langsung file laporan bisa download. Tetapi seringkali ada tambahan-tambahan seperti:

  1. laporan yang ingin ditarik, apakah laporan pembelian, penjualan dll
  2. rentang laporan akan ditarik, dalam hal ini tanggalnya

Oleh karena itu mulailah dengan membuat form. Berikut contoh komponen form untuk membuat laporan.

  1. Tipe Laporan (radio button atau dropdown)
  2. Tanggal {tanggal} hingga {tanggal} (biasanya menggunakan datepicker yang ada di jquery)
  3. Cetak (checkbox)
  4. Buat Laporan (button)

Gunakan code berikut untuk memeriksa variabel yang akan digunakan sebagai filter pencarian dalam fungsi laporan.

<?php
if($_POST)
{
    echo '<pre>';print_r($_POST);die('</pre>');
}
?>

Format Tanggal

Format tanggal tidak boleh sembarangan ditampilkan di excel. Perlu digaris bawahi bahwa format excel yang digunakan klien mungkin tidak sama dengan format tanggal yang digunakan developer! Untuk format tanggal, saya menyarankan menggunakan format YYYY-MM-DD seperti contoh: 2012-05-12, karena dengan menggunakan format tersebut, excel tidak akan mengubah menjadi format yang berbeda.

Jika menggunakan format DD-MM-YYYY, ada kemungkinan excel akan menampilkannya dalam format MM-DD-YYYY. Misalnya, untuk tanggal 12 Mei 2013, 12-05-2013, mungkin dibaca sebagai 5 Desember 2013.

Download Laporan sebagai File PDF

Untuk menggenerate laporan sebagai file .pdf yang bisa didownload, HTML2FPDF bisa digunakan. Kita hanya harus sedikit waspada dengan isi tulisannya. Kekurangan dari HTML2FPDF adalah tidak bisa mengkonversi file .gif. Apabila anda memakai .gif untuk memanfaatkan alpha di gambarnya, ganti saja dengan .png. HTML2FPDF bisa didownload disini

Konsep dasar HTML2FPDF adalah anda menuliskan isi file dengan format html ke file pdf. Isi file yang akan dituliskan ke file pdf, dapat diperoleh dengan dua cara yaitu: 1. membaca output file yang digenerate, misalnya dengan ob_get_contents() 2. meng-generate isi file, misalnya dengan cara seperti membuat file .xls di atas

<?php 
require_once('html2fpdf.php');          // agar dapat menggunakan fungsi-fungsi html2pdf
ob_start();                             // memulai buffer
error_reporting(1);                     // turn off warning for deprecated functions
$pdf= new HTML2FPDF();                  // membuat objek HTML2PDF
$pdf->DisplayPreferences('Fullscreen'); // set preferensi tampilan pdf
?>

Setelah script di atas, tulis data yang akan ditampilkan di pdf dengan format html. Kemudian kita tulis ke file pdf.

<?php
$html=ob_get_contents();                // mengambil data dengan format html, dan disimpan di variabel
ob_end_clean();                         // mengakhiri buffer dan tidak menampilkan data dalam format html
$pdf->addPage();                        // menambah halaman di file pdf
$pdf->WriteHTML($html);                 // menuliskan data dengan format html ke file pdf
$pdf->Output('tes001.pdf','D');         // mengeluarkan file pdf dengan nama tes001.pdf dalam bentuk file yang bisa di download
?>

,

About Author

Tentang PHP Indonesia

PHP Indonesia adalah sebuah komunitas untuk semua orang yang mencintai PHP. Fokus utama kami adalah pemrograman menggunakan bahasa PHP, namun tidak menutup kemungkinan pembahasan yang mencakup keseluruhan LAMP stack. Topik bisa dari pemrograman PHP, penanganan memcached, optimasi database, konfigurasi server, tuning server web, application deployment, framework PHP, hosting pilihan dan sebagainya.

Petunjuk Penulisan

Berikut ini adalah beberapa petunjuk penulisan artikel. Petunjuk dibuat bukan untuk membatasi tetapi demi menjaga kualitas artikel yang terpublikasi di situs ini. Selain itu, keseragaman gaya bahasa dapat menjaga readibilitas (tingkat keterbacaan) sehingga pembaca akan lebih nyaman dalam membaca artikel di situs ini.