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
Setelah tabel dan record sudah siap, let’s write a PHP script. Ini dia scriptnya…
1 <?php
2
3 // nama file
4
5 $namaFile = "report.xls";
6
7 // Function penanda awal file (Begin Of File) Excel
8
9 function xlsBOF() {
10 echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
11 return;
12 }
13
14 // Function penanda akhir file (End Of File) Excel
15
16 function xlsEOF() {
17 echo pack("ss", 0x0A, 0x00);
18 return;
19 }
20
21 // Function untuk menulis data (angka) ke cell excel
22
23 function xlsWriteNumber($Row, $Col, $Value) {
24 echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
25 echo pack("d", $Value);
26 return;
27 }
28
29 // Function untuk menulis data (text) ke cell excel
30
31 function xlsWriteLabel($Row, $Col, $Value ) {
32 $L = strlen($Value);
33 echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
34 echo $Value;
35 return;
36 }
37
38 // header file excel
39
40 header("Pragma: public");
41 header("Expires: 0");
42 header("Cache-Control: must-revalidate, post-check=0,
43 pre-check=0");
44 header("Content-Type: application/force-download");
45 header("Content-Type: application/octet-stream");
46 header("Content-Type: application/download");
47
48 // header untuk nama file
49 header("Content-Disposition: attachment;
50 filename=".$namaFile."");
51
52 header("Content-Transfer-Encoding: binary ");
53
54 // memanggil function penanda awal file excel
55 xlsBOF();
56
57 // ------ membuat kolom pada excel --- //
58
59 // mengisi pada cell A1 (baris ke-0, kolom ke-0)
60 xlsWriteLabel(0,0,"NO");
61
62 // mengisi pada cell A2 (baris ke-0, kolom ke-1)
63 xlsWriteLabel(0,1,"NIM");
64
65 // mengisi pada cell A3 (baris ke-0, kolom ke-2)
66 xlsWriteLabel(0,2,"NAMA MAHASISWA");
67
68 // mengisi pada cell A4 (baris ke-0, kolom ke-3)
69 xlsWriteLabel(0,3,"NILAI");
70
71 // mengisi pada cell A5 (baris ke-0, kolom ke-4)
72 xlsWriteLabel(0,4,"STATUS KELULUSAN");
73
74 // -------- menampilkan data --------- //
75
76 // koneksi ke mysql
77
78 mysql_connect("localhost", "root", "root");
79 mysql_select_db("data");
80
81 // query menampilkan semua data
82
83 $query = "SELECT * FROM nilaimhs";
84 $hasil = mysql_query($query);
85
86 // nilai awal untuk baris cell
87 $noBarisCell = 1;
88
89 // nilai awal untuk nomor urut data
90 $noData = 1;
91
92 while ($data = mysql_fetch_array($hasil))
93 {
94 // menampilkan no. urut data
95 xlsWriteNumber($noBarisCell,0,$noData);
96
97 // menampilkan data nim
98 xlsWriteLabel($noBarisCell,1,$data['nim']);
99
100 // menampilkan data nama mahasiswa
101 xlsWriteLabel($noBarisCell,2,$data['namaMhs']);
102
103 // menampilkan data nilai
104 xlsWriteNumber($noBarisCell,3,$data['nilai']);
105
106 // menentukan status kelulusan
107 if ($data['nilai'] >= 60) $status = "LULUS";
108 else $status = "TIDAK LULUS";
109
110 // menampilkan status kelulusan
111 xlsWriteLabel($noBarisCell,4,$status);
112
113 // increment untuk no. baris cell dan no. urut data
114 $noBarisCell++;
115 $noData++;
116 }
117
118 // memanggil function penanda akhir file excel
119 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.
Silakan isi komentar di bawah ini apabila ada pertanyaan dan diskusi seputar artikel
ini.