Script PHP untuk Membuat Report Format MS. Excel
September 13th, 2008 | by rosihanari |
Cetak Artikel
Satu lagi tutorial persembahan dari blog.rosihanari.net yang mudah-mudahan berguna bagi para web programmer. Tutorial ini adalah bagaimana membuat script PHP untuk menghasilkan file report dalam format MS. Excel.
Apa menariknya report dalam format MS. Excel? dengan report berformat MS. Excel memungkinkan untuk dilakukan pengolahan lagi pada data report tersebut. Sebagai contoh, report tentang data nilai mahasiswa dan status kelulusannya pada matakuliah tertentu. Apabila report yang dihasilkan berupa MS. Excel, maka memungkinkan untuk pengolahan lebih lanjut terhadap report tersebut menggunakan perintah-perintah dalam MS. Excel, seperti menghitung jumlah mahasiswa yang lulus maupun tidak lulus, bahkan dalam bentuk prosentasenya.
Nah… kita akan coba membuat script PHP untuk menghasilkan report dalam format MS. Excel ini, dengan mengambil studi kasus lagi-lagi tentang nilai matakuliah mahasiswa. Report yang akan dihasilkan berupa daftar mahasiswa (NIM dan Nama) yang mengambil matakuliah, nilai yang diperoleh, serta status kelulusannya (LULUS/TIDAK LULUS). Untuk menentukan kelulusan, misalnya diambil policy jika nilainya 60 ke atas maka LULUS, jika kurang dari 60 maka TIDAK LULUS. Untuk data mentah dari report ini diambil dari database MySQL.
OK… terlebih dahulu kita siapkan tabel dan recordnya.
CREATE TABLE nilaimhs( nim varchar(10), namaMhs varchar(30), nilai int(11), PRIMARY KEY(nim) )
INSERT INTO nilaimhs VALUES
('M0197001', 'Faza Fauzan Kh.', 80),
('M0197002', 'Dwi Amalia Fitriani', 75),
('M0197003', 'Rosihan Ari Yuana', 45),
('M0197004', 'Nada Hasanah', 83),
('M0197005', 'Muh. Ahsani Taqwim', 90);
Setelah tabel dan record sudah siap, let’s write a PHP script. Ini dia scriptnya…
<?php
// nama file
$namaFile = "report.xls";
// Function penanda awal file (Begin Of File) Excel
function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
// Function penanda akhir file (End Of File) Excel
function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}
// Function untuk menulis data (angka) ke cell excel
function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}
// Function untuk menulis data (text) ke cell excel
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
// header file excel
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,
pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
// header untuk nama file
header("Content-Disposition: attachment;
filename=".$namaFile."");
header("Content-Transfer-Encoding: binary ");
// memanggil function penanda awal file excel
xlsBOF();
// ------ membuat kolom pada excel --- //
// mengisi pada cell A1 (baris ke-0, kolom ke-0)
xlsWriteLabel(0,0,"NO");
// mengisi pada cell A2 (baris ke-0, kolom ke-1)
xlsWriteLabel(0,1,"NIM");
// mengisi pada cell A3 (baris ke-0, kolom ke-2)
xlsWriteLabel(0,2,"NAMA MAHASISWA");
// mengisi pada cell A4 (baris ke-0, kolom ke-3)
xlsWriteLabel(0,3,"NILAI");
// mengisi pada cell A5 (baris ke-0, kolom ke-4)
xlsWriteLabel(0,4,"STATUS KELULUSAN");
// -------- menampilkan data --------- //
// koneksi ke mysql
mysql_connect("localhost", "root", "root");
mysql_select_db("data");
// query menampilkan semua data
$query = "SELECT * FROM nilaimhs";
$hasil = mysql_query($query);
// nilai awal untuk baris cell
$noBarisCell = 1;
// nilai awal untuk nomor urut data
$noData = 1;
while ($data = mysql_fetch_array($hasil))
{
// menampilkan no. urut data
xlsWriteNumber($noBarisCell,0,$noData);
// menampilkan data nim
xlsWriteLabel($noBarisCell,1,$data['nim']);
// menampilkan data nama mahasiswa
xlsWriteLabel($noBarisCell,2,$data['namaMhs']);
// menampilkan data nilai
xlsWriteNumber($noBarisCell,3,$data['nilai']);
// menentukan status kelulusan
if ($data['nilai'] >= 60) $status = "LULUS";
else $status = "TIDAK LULUS";
// menampilkan status kelulusan
xlsWriteLabel($noBarisCell,4,$status);
// increment untuk no. baris cell dan no. urut data
$noBarisCell++;
$noData++;
}
// memanggil function penanda akhir file excel
xlsEOF();
exit();
?>
Apabila script di atas dijalankan pada browser, maka browser akan menampilkan kotak dialog untuk mendownload file MS. Excel sebagai outputnya. Gambar berikut ini adalah screen shot isi file excel yang telah didownload.

Mudah bukan cara membuatnya?
Silakan isi komentar di bawah ini apabila ada pertanyaan dan diskusi seputar artikel ini.
| Baca Juga Artikel Terkait |
Kata kunci: excel php - export excel - PHP - php script - report script -






saya sudah coba berhasil tapi ketika saya export lebih dari 1000 record maka di excel datanya berupa html. mohon bantuanya?
saya coba script diatas dan disesuaikan dgn data saya, lalu dibuka pakai excel 2007, kok hasilnya semua data jadi 1 sel di A1 ya ? tks
Mas ari,
ketika saya coba script di atas kok data gak keluar ya .. saya menggunakan ubuntu 12.04 sebagai servernya .. client menggunakan windows .. apakah harus ada setting di web servernya yang terletak di ubuntu ?
Mohon pencerahannya .. terima kasih
mas,
bisa gg si jelaskan menganai pack dsana
kayak
echo pack(“ssssss”, 0×204, 8 + $L, $Row, $Col, 0×0, $L);
udah saya coba dngan versi database yg saya punya. tapi yang tampil cuma 3 colom saja, selebihnya bernilai 0…
mohon pencerahannya..
terimaksh
kalau menampilkan gambar gimana ya? saya coba gunakan kok di excel gak nampil ya?? terimakasih
Pak postingin donk mmbuat lporan perpriode berdsrkan,tnggl bulan dn thn
mksh bnyk pak blogx bpak sngt mnbntu sy mklum newbie pak..kren postingan-postingan di blog ini simpel dn jelas serta mdh dphammi…
Bagaimana jika exportnya terdapat image…karena pas export image, imagenya di excel tidak terbaca…dan bagaimana jika membukanya langsung dengan format excel 2007 seperti phpexcel.. pak tulis tentang buku phpexcel donk yang mantap kayak 67 trik & ide berlian master php,,isinya mantap…
mohon bantuannya…please
@elena: mudah2an ya mbak…
sudah sy coba tp yg kluar exportnya bukan excel malahan adove dremwevar, gimana solusinya mas..