Membuat Report Microsoft Excel/OpenOffice Calc dari PHP

Beberapa cara untuk membuat report PHP dari database MySQL adalah dengan men-generate ke file Excel atau PDF. Untuk membuat file Excel dari PHP-MySQL bisa menggunakan “classXls” yang dibuat oleh Xavier Noguer <xnoguer@rezebra.com>. Class ini sangat mudah di-implementasikan di aplikasi web kita dan yang penting, class ini bersifat free dan opensource. Class ini dapat didownload di http://tauco.web.id/download/csp-excel-library.zip, yang terdiri dari file-file “BIFFwriter.php”,”Format.php”, “OLEwriter.php”, “Parser.php”, “Workbook.php” dan “Worksheet.php”. berikut adalah contoh script PHP-nya :

<?php
//memasukkan class ke dalam script
require_once(‘../xlsClass/OLEwriter.php’);
require_once(‘../xlsClass/BIFFwriter.php’);
require_once(‘../xlsClass/Worksheet.php’);
require_once(‘../xlsClass/Workbook.php’);
//koneksi database, sesuaikan dengan host,username dan password database anda
function open_connect() {
$host=”localhost”;
$usrname=”root”;
$usrpwd=””;
$dbname=”xxx_db”;
$link=mysql_connect($host,$usrname,$usrpwd) or die (“Database tidak dapat
dihubungkan!”);
mysql_select_db($dbname,$link);
return $link;
}
function HeaderingExcel($filename){
header(“Content-type:application/vnd.ms-excel”);
header(“Content-Disposition:attachment;filename=$filename”);
header(“Expires:0”);
header(“Cache-Control:must-revalidate,post-check=0,pre-check=0”);
header(“Pragma: public”);
}
//Tempatkan query anda disini (harus “SELECT”)
$sql=”SELECT * FROM xxx”;
$link=open_connect();
$qry=mysql_query($sql,$link) or die (“Invalid Query”);
//nama file yang dihasilkan adalah ‘xxx.xls’
HeaderingExcel(‘xxx.xls’);
//membuat area kerja
$workbook=new Workbook(“-“);
//class untuk mencetak tulisan besar dan tebal
$fBesar=& $workbook->add_format();
$fBesar->set_size(14);
$fBesar->set_bold();
//class untuk mencetak tulisan tanpa border (untuk judul laporan)
$fList=& $workbook->add_format();
$fList->set_border(0);
//class untuk mencetak tulisan dengan border dan ditengah kolom (untuk judul kolom)
$fDtlHead=& $workbook->add_format();
$fDtlHead->set_border(1);
$fDtlHead->set_align(“center”);
//class untuk mencetak tulisan dengan border (untuk detil laporan bernilai string)
$fDtl=& $workbook->add_format();
$fDtl->set_border(1);
//class untuk mencetak tulisan dengan border (untuk detil laporan bernilai numerik)
$fDtlNumber=& $workbook->add_format();
$fDtlNumber->set_border(1);
$fDtlNumber->set_align(“right”);
$fDtlNumber->set_num_format(3);
//class untuk men-zoom laporan 75%
$worksheet1= & $workbook->add_worksheet(“Sheet 1″);
$worksheet1->set_zoom(75);
//class untuk men-set page orientation ke landscape
$worksheet1->set_landscape(75);
//class untuk mengatur margin kertas
$worksheet1->set_margin_left(0.2);
$worksheet1->set_margin_top(0.2);
$worksheet1->set_margin_right(0.5);
$worksheet1->set_margin_bottom(0.5);
//class untuk men-set jenis kertas (1=letter, 9=A4)
$worksheet1->set_paper(1);
//class untuk menyembunyikan gridline
$worksheet1->hide_gridlines();
//class untuk men-set area print (baris mulai, kolom mulai, baris akhir, kolom akhir) dimulai dari 0
$worksheet1->print_area(0,0,40,8);
//mengatur lebar kolom (baris, kolom, lebar kolom)
//sesuaikan dengan kolom pada table anda
$worksheet1->set_column(0,0,3);
$worksheet1->set_column(0,1,30);
$worksheet1->set_column(0,2,15);
$worksheet1->set_column(0,3,25);
$worksheet1->set_column(0,4,25);
$worksheet1->set_column(0,5,25);
$worksheet1->set_column(0,6,30);
$worksheet1->set_column(0,7,5);
//sesuaikan dengan judul kolom pada table anda
$worksheet1->write_string(0,3,”DAFTAR DETIL DELIVERY ORDER”,$fBesar);
$worksheet1->write_string(1,0,”Periode : “,$fList);
$worksheet1->write_string(2,0,”No.”,$fDtlHead);
$worksheet1->write_string(2,1,”Customer”,$fDtlHead);
$worksheet1->write_string(2,2,”Tgl / No.”,$fDtlHead);
$worksheet1->write_string(2,3,”Item”,$fDtlHead);
$worksheet1->write_string(2,4,”Dim”,$fDtlHead);
$worksheet1->write_string(2,5,”HS / Warna”,$fDtlHead);
$worksheet1->write_string(2,6,”Keterangan”,$fDtlHead);
$worksheet1->write_string(2,7,”Qty”,$fDtlHead);
//looping record dimulai dari baris ketiga
//sesuaikan dengan field pada table anda
$baris=3;
$nomor=1;
while($rowdtl=mysql_fetch_object($qrydtl)) {
$worksheet1->write_string($baris,0,$nomor,$fDtlHead);
$worksheet1->write_string($baris,1,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,2,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,3,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,4,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,5,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,6,$rowdtl->xxx,$fDtl);
$worksheet1->write_string($baris,7,$rowdtl->xxx,$fDtlHead);
//$baris=$baris+2;
$baris=$baris+1;
$nomor=$nomor+1;
}
$workbook->close();
?>

8 Comments (+add yours?)

  1. Soesoe
    Oct 29, 2009 @ 03:09:42

    Thanks Mas, Membantu banget nich…
    Semoga Amal Ibadahnya diterima ALLAH SWT. Amien…
    He heee..

  2. anto2k
    Dec 04, 2009 @ 04:08:49

    wah mantap mas, hanya saja untuk saat ini kok nggak bisa didownload y
    http://tauco.web.id/download/csp-excel-library.zip
    (error 404)
    (smoga amal jariyah trf ilmunya diterima Allah, aamiiin…)

  3. rhianty
    May 26, 2010 @ 02:41:42

    thx buat share ilmunya………
    tapi koq “http://tauco.web.id/download/csp-excel-library.zip” error yah?

  4. angelhelen
    May 27, 2010 @ 12:08:35

  5. Trackback: Pengaruh Konfigurasi Safe_Mode on/off di PHP « Angelhelen’s Weblog
  6. Vasco Boavida
    Jan 15, 2013 @ 17:38:40

    mas kalo bisa, sharing juga souece kodenya ke dalam zip dan kami bisa download ya mas, supaya bagi pemula bisa mengerti.
    terima kasih

  7. Anonymous
    Oct 15, 2014 @ 12:31:34

    mas tanya nih misal tar di report excel kolomnya berwarna gimana ya ?

  8. private krankenversicherung baby
    Dec 01, 2014 @ 20:21:18

    I am curious to find out what blog platform you’re working with?
    I’m having some small security problems with my latest website and I would like to find something more risk-free.
    Do you have any suggestions?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: