Algoritma untuk export confi rates Mandira

loop while reading data hotel
loop while reading data roomtype
info = TRUE
first = TRUE
same = TRUE
counter = 0
loop while reading data rates
counter++
if (first==TRUE)
store current record into local variable
first = FALSE
else
if (current record != local variable)
first = TRUE
same = FALSE
if (info==TRUE)
write to Excel with header
info = FALSE
else
write to Excel without header
row++
end if
else
if (counter==jumlah_record)
write to Excel with header
else
write to Excel without header
end if
row++

Sebenarnya untuk melakukan export dari data MySQL ke format Excel cukup mudah, yaitu dengan memanfaatkan beberapa function. Namun hal ini menjadi cukup rumit apabila melibatkan multi table dan kita harus menyaring data harga menurut periode yang berbeda2. Algoritma saya diatas mungkin dapat menjadi salah satu solusi yang bisa digunakan, yaitu dengan memanfaatkan variabel sebagai flag untuk pengecekan jika pertama kali diexecute, maka kita simpan data2 yang dibaca dari tabel ke dalam variabel. Hal ini sebenarnya dimaksudkan untuk perbandingan saja, karena untuk record2 selanjutnya akan dibandingkan dengan variabel tersebut. Apabila datanya masih sama, maka tidak perlu ditulis di Excel, cukup kita simpan tanggal terakhir untuk menentukan validity dari periode dari roomtype yang bersangkutan. Berikut saya sertakan fungsi2 untuk menulis Excel dengan PHP. Fungsi ini masih tergolong cukup sederhana loh, jika dibandingkan dengan beberapa PHP class lainnya:

// header file excel

$filename=”text.xls”;

function xlsBOF()
{
echo pack(“ssssss”, 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
function xlsEOF()
{
echo pack(“ss”, 0x0A, 0x00);
return;
}
function xlsWriteNumber($Row, $Col, $Value)
{
echo pack(“sssss”, 0x203, 14, $Row, $Col, 0x0);
echo pack(“d”, $Value);
return;
}
function xlsWriteLabel($Row, $Col, $Value )
{
$L = strlen($Value);
echo pack(“ssssss”, 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}

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(“Content-Disposition: attachment;filename=$filename”);
header(“Content-Transfer-Encoding: binary “);
xlsBOF();

//buat penulisan Excel disini

xlsEOF();

Jika file php ini djalankan, dia akan langsung membuat dokumen Excel, yang isinya sesuai dengan yang kita program, yaitu dengan fungsi xlsWriteLabel dan xlsWriteNumber. Cukup sederhana bukan?

Oleh: Wahyu Kurniawan

Tags: ,