Untuk Aplikasi berbasis web, seringkali kita kesulitan untuk mendapatkan format laporan yg mantap. meskipun kita bisa membuatnya dalam format HTML atau PDF. Kekurangan format HTML adalah tampilan mudah berubah dengan berubahnya browser yg kita pakai. Sedangkan untuk membuat format PDF, cukup merepotkan untuk menampilkan data dalam format tabel, apalagi kalau data yg akana ditampilkan cukup panjang.
Untuk itu kita perlu mencari format laporan yg 'enak' untuk dilihat tetapi mudah dibuat, yakni format Excel. Script yg saya jadikan contoh ini berupa laporan AN-05 (Laporan pemberangkatan CTKI standar). File-file class untuk menghasilkan file format excel ini bisa anda download di www.syamsul.org/download/excel.
Untuk itu kita perlu mencari format laporan yg 'enak' untuk dilihat tetapi mudah dibuat, yakni format Excel. Script yg saya jadikan contoh ini berupa laporan AN-05 (Laporan pemberangkatan CTKI standar). File-file class untuk menghasilkan file format excel ini bisa anda download di www.syamsul.org/download/excel.
<?php
require_once ('../incl/class.writeexcel_workbook.inc.php');
require_once ('../incl/class.writeexcel_worksheet.inc.php');
// akses ke file koneksi database
// database bisa apa saja : MySQL,PosgreSQL,ODBC,dsb
include ('../incl/koneksi.php');
// buat file temporary
$fname = tempnam("/tmp", "simple.xls");
// buat workbook baru
$workbook = &new writeexcel_workbook($fname);
// buat format tampilan header
$header =& $workbook->addformat(array(
bold => 1,
italic => 0,
color => 'black',
size => 8,
font => 'Arial',
));
$header->set_align('center');
// buat format 1 tampilan teks
$teks1 =& $workbook->addformat(array(
bold => 0,
italic => 0,
color => 'black',
size => 8,
font => 'Arial',
));
$teks1->set_align('left');
// buat format 2 tampilan teks
$teks2 =& $workbook->addformat(array(
bold => 0,
italic => 1,
color => 'black',
size => 8,
font => 'Arial',
));
$teks2->set_align('center');
// buat worksheet baru
$worksheet = &$workbook->addworksheet(' lembar-1 ');
// mulai menuliskan data
// sintaks : write(baris-n, kolom-n, ukuran).
// baris dan kolom dimulai dgn indeks 0
// buat header worksheet
$worksheet->write(0, 1, "LAPORAN PEMBERANGKATAN TKI DI LUAR NEGERI ", $header);
$worksheet->merge_cells(0,1,0,3);
// buat header kolom
$worksheet->set_column(0,0,3);
$worksheet->write(1, 0, "No.", $header);
$worksheet->set_column(1,1,22);
$worksheet->write(1, 1, "Nama TKI &", $header);
$worksheet->write(2, 1, "Temp/Tgl Lahir", $header);
$worksheet->set_column(2,2,7);
$worksheet->write(1, 2, "Jenis", $header);
$worksheet->write(2, 2, "Kelamin", $header);
$worksheet->set_column(3,3,30);
$worksheet->write(1, 3, "Alamat Keluarga di", $header);
$worksheet->write(2, 3, "Indonesia / Kandepnaker", $header);
$worksheet->set_column(4,4,10);
# query record data CTKI
$n = 2; $m=1;
$query = "select refno,nama,tmplahir,tgllahir,alamat from biodata where statustki='berangkat' order by refno";
$recordSet = &$db->Execute($query);
while(!$recordSet->EOF){
// pecahkan panjang alamat tki
$alm1 = substr($recordSet->fields["alamat"],0,30);
$alm2 = substr($recordSet->fields["alamat"],30,strlen($recordSet->fields["alamat"]));
// mulai menampilkan data
$worksheet->write($n+1,0,$m,$teks1);
$worksheet->write($n+1,1,$recordSet->fields["nama"],$teks1);
$worksheet->write($n+2,1,$recordSet->fields["tmplahir"]." / ".$recordSet->fields["tgllahir"],$teks1);
$worksheet->write($n+1,2,'WANITA',$teks2);
$worksheet->write($n+1,3,$alm1,$teks2);
$worksheet->write($n+2,3,$alm2,$teks2);
$recordSet->MoveNext();
$n=$n+3; $m=$m+1;
}
// tutup workbook
$workbook->close();
// tampilkan dalam format excel
header("Content-Type: application/x-msexcel; name=\"cetak_an05.xls\"");
header("Content-Disposition: inline; filename=\"cetak_an05.xls\"");
// buka dan tampilkan hasilnya
$fh=fopen($fname, "rb");
fpassthru($fh);
// hapus file sementara
unlink($fname);
?>




1 komentar:
dobry poczatek
Poskan Komentar