Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (Coba dulu FREE)
Dapatkan Script SMS Gateway PHP + MySQL

Seperti: software pengirim SMS massal, SMS survei, SMS polling, SMS quick count, SMS dakwah, Web2SMS dan masih banyak lagi... semuanya berbasis PHP & MySQL
[Info Lengkap...]



Script PHP untuk Membuat Report Format MS. Excel


September 13th, 2008 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

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…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?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.


Beberapa artikel terkait


Share this article on:

Kata kunci: PHP -


Ada 119 komentar dalam artikel ini.

  1. [...] number), warna yang berbeda untuk value berupa number, string dll. Sebagai contoh, silakan lihat postingan ini. Begitu pula untuk identifier, dia akan diberi warna yang beda pula. Nah… bagi para blogger [...]

  2. thymo says:

    koq file yang didownload extensionya report.php ya…???

  3. kereayem says:

    Mas, kalo ke word gimana ya.
    misalkan saya dah punya template file doc,
    misalkan :
    Nama : –
    Alamat : —

    Nah Data Nama Alamat itu diisi dari PHP, secara dinamis..

    Thk Before

  4. rosihanari says:

    kalo reportnya dalam bentuk .doc sepertinya gak bisa karena .doc itu merupakan format berbentuk grafis. Sedangkan report dalam bentuk .rtf (rich text format) bisa, namun untuk data details menampilkan beberapa record agak sulit.

  5. kereayem says:

    Bukan report mas, cukup insert data aja, di word. Jadi bukan untuk data detail. Jadi saya dah siapkan template kata-kata di doc, misalkan Nama , alamat . Nah isi data,alamatnya itu diisi dari PHP (Dari Database) kemudian di lempar ke word. Ini akan bermanfaat untuk membuat sebuah output, karena kelemahan web kan untuk cetaknya kadang kurang bagus, jika di word kan nanti bisa di edit. Kasus ini bermanfaat untuk membuat report misalkan, membuat surat keterangan. Saya nemu artikel yang bagus, mungkin mas bisa pelajari..and praktekkan and di posting di blog ini mas..

    Ini mas link nya :
    http://www.phpbuilder.com/columns/yunus20031124.php3?page=1

  6. rosihanari says:

    saya akan coba pelajari, thanks anyway…

  7. [...] mas “Kereayem” yang menanyakan bagaimana cara membuat dokumen DOC dengan script PHP di salah satu komentarnya dalam blog ini. Namun maaf mas… karena sepertinya dokumen DOC sulit dimanipulasi dengan PHP, sehingga [...]

  8. Benny says:

    Terima kasih atas bantuan-scriptnya mas.
    Export ke excell itu benar-benar membantu.

    Saya pakai OS Linux UbuntuDesktop 8.04 + XAMPP scriptnya berjalan lancar.
    Ketika saya pindahkan ke OS Windows XP + XAMPP file excellnya kosong tidak berisi data.
    Mohon penjelasan.

  9. Mr. X says:

    thxs ya bwat tutorialnya.
    program yang saya bwat udh slesai.
    smoga nanti bkin tutorial yang lain ya…
    nanti klo ada tutorial yang bagus lagi kirimin ya k’email saya.

  10. Mr. X says:

    mas kok klo d’Mcrsft office 2007 reportnya ga bisa dibuka ya??? apa yang harus diganti???



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
Untuk membuktikan bahwa komentar Anda bukan spam, tulis kata yang muncul dalam gambar di bawah ini. Bila Anda tidak bisa membaca kata dalam gambar, klik pada gambar tersebut untuk mendengarkan suara dari kata tersebut
Click to hear an audio file of the anti-spam word