Senin, 09 April 2012

[Contoh 1] Membuat Laporan Export Data dari MySQL ke Excel dengan PHP (no-pear)

Daripada Onani-Ide... mending ditular

http://bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/

Salah satu yang diperlukan dalam sistem informasi adalah pelaporan dan pengemasan data. Data yang berasal dari database, biasanya perlu dikonversi ke lain bentuk agar dapat diterima sebagai standard laporan pihak lain dalam bentuk standard dokumen. Salah satu bentuk standard dokumen adalah Excel. Sebelum ini juga pernah dipaparkan tentang pelaporan data dalam bentuk PDF (Portable Document Format). Excel atau worksheet dipercaya sebagai standard pelaporan, bahkan hampir semua program perkantoran (office) telah melakukan pembuatan dokumen yang standard dengan Workbook/Worksheet ini. Permasalahan para web developer salah satunya adalah melakukan exporting ke dalam format excel.

Dalam PHP, sebenarnya telah terdapat library khusus untuk melakukan proses data yang berkaitan dengan excel, yaitu dengan menggunakan fasilitas PEAR. Proses installasi PEAR sendiri kadang juga melalui masalah yang tidak kalah sulitnya dengan pembuatan script export SQL to XLS sendiri. Oleh karena itu muncul beberapa cara untuk melakukan export data ke dalam bentuk excel.

Langkah paling mudah untuk menjadikan sebuah data ke dalam bentuk excel adalah dengan cara menyusun data sedemikian rupa hingga terdapat tabel dan baris, kemudian mengarahkan agar data tergenerate sebagai excel. Beberapa hal yang perlu diketahui adalah bahwa pindah baris dapat menggunakan perintah “\n”, dan tabel dapat langsung terbentuk ke dalam cell.

Contoh 1.

$title = "Contoh Excel Export";
 
$content = "
 
<table>
 
<tr><td>nama</td><td>bimosaurus</td></tr><tr><td>alamat</td><td>wonosobo</td></tr><tr><td>nohp</td><td>080808080</td></tr>
 
</table>
 
"
;
 
$content = $title . "\n" . $content;
 
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=excel.xls");
header("Pragma: no-cache");
header("Expires: 0");
print $content;

 

Contoh hasilnya bisa diambil di sini

 

Contoh 2.

Contoh ini melibatkan data MySQL. Misal tabel yang ada adalah seperti berikut :

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum
 
 
if( mysql_connect("localhost","user","password") ){
mysql_select_db("kepegawaian");
}
 
 
$title = "Exporting Sederhana dari SQL ke XLS";
$content_header = "<table><tr><th>NIP</th><th>Nama</th><th>Jumlah Honor</th><th>Status Terima</th></tr>";
$content_footer = "</table>";
$content_dalam = "";
 
 
$sql = "SELECT * FROM `pegawai`";
$q = mysql_query( $sql );
while( $r=mysql_fetch_array( $q ) ){
 
$data = "<tr><td>".$r['nip']."</td><td>".$r['nama']."</td><td>".$r['honor']."</td><td>".$r['status_ambil']."</td></tr>";
$content_dalam = $content_dalam ."\n". $data;
}
 
$content_sheet = $title . "\n" . $content_header . "\n" . $content_dalam . "\n" . $content_footer;
 
 
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=excel.xls");
header("Pragma: no-cache");
header("Expires: 0");
print $content_sheet;

 

Hasil dari contoh ini dapat diambil di sini

 

Nah, untuk sampai sini cukup mudah bukan? Hanya saja, format yang dihasilkan oleh model exporting ini tidak standard. Adakalanya ketika terdownload justru akan muncul script tabelnya. Untuk kondisi yang cukup standard, tunggu posting berikutnya..

 

Semoga berguna


Nek di MP dikira ngejunk nyampah ya wis ben... sekali-sekali timbang uneg-uneg pikiran cuma jadi onani ide

4 komentar:

  1. Aku ikut senang kalo MP ini dipenuhi ilmu-ilmu yg bermanfaat.
    Terimakasih sudah kembali ke khittah.

    BalasHapus
  2. hehehe maturnuwun mas iwan.. daripada MP sekedar buat tempat misuh dan sampah... semoga bisa jadi tempat bagi memori tentang apa yang kita pelajari, sekaligus buku pelajaran bagi yang lain mas...

    BalasHapus
  3. Bener, memang tertulis:

    "The file you are trying to open, 'excel.xls', is in a different format than specified by the file extension. bla..bla..bla.."

    Posting selanjutnya seru ketokane ki :)

    BalasHapus