Search This Blog

March 11, 2024

Tutorial PHP - Script Menampilkan Data Sperti Excel

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);

 

<?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();

 

?>

 

 

 

<form id=”form1″ name=”form1″ method=”post” action=”excel.php”>
<p>
QUERY : <br />
<textarea name=”sql” cols=”50″ rows=”6″ id=”sql”></textarea>
</p>
<p>
<input type=”submit” name=”Submit” value=”Submit” />
</p>
</form>
<p style=”text-align: justify;”><strong>Nama File : excel.php</strong>
<?php
$hostname = “localhost”;
$username = “root”;
$database = “a”;
$password = “”;
$conn = mysql_connect($hostname,$username,$password);
mysql_select_db($database);

if (isset($_POST['sql']))
{
$q = mysql_query(stripslashes($_POST['sql'])) or die (“Not valid query !”);
$res = “”;
while ($f = mysql_fetch_field($q)) {
$res .= $f->name . “\t”;
}
$res .= “\r\n”;
while ($r = mysql_fetch_array($q)) {
for ($i=0; $i<mysql_num_fields($q); $i++) {
$res .= $r[$i] . “\t”;
}
$res .= “\r\n”;
}
mysql_free_result($q);
header(“Content-disposition: attachment; filename=aan.xls”);
header(“Content-type: Application/exe”);
header(“Content-Transfer-Encoding: binary”);
echo $res;
}
?>

No comments: