Kamis, 31 Agustus 2017

Script Php Menciptakan Report Format Excel

Script Php Menciptakan Report Format Excel

Satu lagi tutorial persembahan dari blog.rosihanari.net yang mudah-mudahan berkhasiat bagi para web programmer. Tutorial ini ialah bagaimana menciptakan 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 wacana 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 memakai perintah-perintah dalam MS. Excel, menyerupai menghitung jumlah mahasiswa yang lulus maupun tidak lulus, bahkan dalam bentuk prosentasenya.
Nah… kita akan coba menciptakan script PHP untuk menghasilkan report dalam format MS. Excel ini, dengan mengambil studi kasus lagi-lagi wacana 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 memilih kelulusan, contohnya diambil policy kalau nilainya 60 ke atas maka LULUS, kalau 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(   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); <?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 final 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();  // ------ menciptakan 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']);     // memilih 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 final file excel xlsEOF(); exit();  ?> 

Apabila script di atas dijalankan pada browser, maka browser akan menampilkan kotak obrolan untuk mendownload file MS. Excel sebagai outputnya. Gambar berikut ini ialah screen shot isi file excel yang telah didownload.

Theme By Hindi Blog

0 Comments: