OK… terlebih dahulu kita siapkan tabel dan recordnya.
1.CREATE TABLE nilaimhs(2. nim varchar(10),3. namaMhs varchar(30),4. nilai int(11),5. PRIMARY KEY(nim)6.)1.INSERT INTO nilaimhs VALUES2.('M0197001', 'Faza Fauzan Kh.', 80),3.('M0197002', 'Dwi Amalia Fitriani', 75),4.('M0197003', 'Rosihan Ari Yuana', 45),5.('M0197004', 'Nada Hasanah', 83),6.('M0197005', 'Muh. Ahsani Taqwim', 90);Setelah tabel dan record sudah siap, let’s write a PHP script. Ini dia scriptnya…
001.002. 003.// nama file004. 005.$namaFile = "report.xls";006. 007.// Function penanda awal file (Begin Of File) Excel008. 009.function xlsBOF() {010.echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);011.return;012.}013. 014.// Function penanda akhir file (End Of File) Excel015. 016.function xlsEOF() {017.echo pack("ss", 0x0A, 0x00);018.return;019.}020. 021.// Function untuk menulis data (angka) ke cell excel022. 023.function xlsWriteNumber($Row, $Col, $Value) {024.echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);025.echo pack("d", $Value);026.return;027.}028. 029.// Function untuk menulis data (text) ke cell excel030. 031.function xlsWriteLabel($Row, $Col, $Value ) {032.$L = strlen($Value);033.echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);034.echo $Value;035.return;036.}037. 038.// header file excel039. 040.header("Pragma: public");041.header("Expires: 0");042.header("Cache-Control: must-revalidate, post-check=0,043. pre-check=0");044.header("Content-Type: application/force-download");045.header("Content-Type: application/octet-stream");046.header("Content-Type: application/download");047. 048.// header untuk nama file049.header("Content-Disposition: attachment;050. filename=".$namaFile."");051. 052.header("Content-Transfer-Encoding: binary ");053. 054.// memanggil function penanda awal file excel055.xlsBOF();056. 057.// ------ membuat kolom pada excel --- //058. 059.// mengisi pada cell A1 (baris ke-0, kolom ke-0)060.xlsWriteLabel(0,0,"NO"); 061. 062.// mengisi pada cell A2 (baris ke-0, kolom ke-1)063.xlsWriteLabel(0,1,"NIM"); 064. 065.// mengisi pada cell A3 (baris ke-0, kolom ke-2)066.xlsWriteLabel(0,2,"NAMA MAHASISWA");067. 068.// mengisi pada cell A4 (baris ke-0, kolom ke-3)069.xlsWriteLabel(0,3,"NILAI"); 070. 071.// mengisi pada cell A5 (baris ke-0, kolom ke-4)072.xlsWriteLabel(0,4,"STATUS KELULUSAN"); 073. 074.// -------- menampilkan data --------- //075. 076.// koneksi ke mysql077. 078.mysql_connect("localhost", "root", "root");079.mysql_select_db("data");080. 081.// query menampilkan semua data082. 083.$query = "SELECT * FROM nilaimhs";084.$hasil = mysql_query($query);085. 086.// nilai awal untuk baris cell087.$noBarisCell = 1;088. 089.// nilai awal untuk nomor urut data090.$noData = 1;091. 092.while ($data = mysql_fetch_array($hasil))093.{094. // menampilkan no. urut data095. xlsWriteNumber($noBarisCell,0,$noData);096. 097. // menampilkan data nim098. xlsWriteLabel($noBarisCell,1,$data['nim']);099. 100. // menampilkan data nama mahasiswa101. xlsWriteLabel($noBarisCell,2,$data['namaMhs']);102. 103. // menampilkan data nilai104. xlsWriteNumber($noBarisCell,3,$data['nilai']);105. 106. // menentukan status kelulusan107. if ($data['nilai'] >= 60) $status = "LULUS";108. else $status = "TIDAK LULUS";109. 110. // menampilkan status kelulusan111. xlsWriteLabel($noBarisCell,4,$status);112. 113. // increment untuk no. baris cell dan no. urut data114. $noBarisCell++;115. $noData++;116.}117. 118.// memanggil function penanda akhir file excel119.xlsEOF();120.exit();121. 122.?>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.
Tags
PHP
