September 14, 2016 thumb Membuat Download Excel Menggunakan Native PHP

pernah dapat masalah bagaimana caranya membuat sebuah file Excel yang di generate langsung menggunakan PHP. nah kali ini saya ingin sedikit sharing tentang bagaimana caranya meng-generate sebuah file excel menggunakan PHP Native. kenapa native, hm.. nanti akan saya bahas penggunaan framework PHP, tapi kali ini Native dahulu. mengapa ? kelebihan native adalah lebih cepat, tapi dengan fitur terbatas. untuk melakukan export pada data yang sederhana dan dengan format yang sederhana. saya sudah buktikan dengan native cuma butuh waktu sekitar 1.54 detik dan dengan framework butuh sekitar 4.61 detik. bayangkan jika kebetulan datanya ada ratus ribuan, jika yang native butuh 1.54 Jam maka yang Framework butuh 4.61 Jam. padahal untuk hasil yang sama.

berikut ini adalah source code fungsi yang akan kita gunakan untuk meng-generate file Excel dalam Bahasa PHP.

// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.

function cleanDataExcel(&$str){
	$str = preg_replace("/\t/", "\\t", $str);
	$str = preg_replace("/\r?\n/", "\\n", $str);
	if($str == 't') $str = 'TRUE';
	if($str == 'f') $str = 'FALSE';
	if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) {
		$str = "'$str";
	}
	if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

function createExcel($filename,$array){
	// filename for download
	$filename = $filename.".xls";
	header("Content-Disposition: attachment; filename=\"$filename\"");
	header("Content-Type: application/vnd.ms-excel");	
	$flag = false;
	foreach($array as $row) {
		if(!$flag) {
			// display field/column names as first row
			echo implode("\t", array_keys($row)) . "\r\n";
			$flag = true;
		}
		array_walk($row, 'cleanDataExcel');
		echo implode("\t", array_values($row)) . "\r\n";
	}
	return;
}

dua fungsi diatas dipakai untuk mengenerate sebuah file excel dari sebuah array. Fungsi cleanDataExcel digunakan untuk mengganti karakter Tab dan New Line yang diganti dengan menggunakan token Excel. sehingga data menjadi bersih dari token-token tersebut. sedangkan fungsi createExcel akan memanggil fungsi cleanDataExcel yang kemudian digabungkan dengan menggunakan implode dan diubah headernya sehingga menghasilkan file yang namanya sesuai dengan parameter $filename.

taruhlah saya memiliki data sebagai berikut :

$keluarga=array();
$keluarga[]=array(
	"Nama"=>"Imam Ghozali",
	"Alamat"=>"Lamongan",
	"Status"=>"Menikah",
	"Ayah"=>"Asman",
	"Ibu"=>"-"
);
$keluarga[]=array(
	"Nama"=>"Abdul Malik",
	"Alamat"=>"Lamongan",
	"Status"=>"Menikah",
	"Ayah"=>"Imam Ghozali",
	"Ibu"=>"Satokah"
);
$keluarga[]=array(
	"Nama"=>"Nurul Huda",
	"Alamat"=>"Lamongan",
	"Status"=>"Menikah",
	"Ayah"=>"Abdul Malik",
	"Ibu"=>"Muniswatin"
);
$keluarga[]=array(
	"Nama"=>"Salman Al-Farisi",
	"Alamat"=>"Gresik",
	"Status"=>"Belum Menikah",
	"Ayah"=>"Nurul Huda",
	"Ibu"=>"-"
);

data tersebut berupa array dua dimensi yang mana terdapat nama dan alamat di tiap-tiap data yang ada. ingat pada contoh kali ini, semuanya memiliki dimensi yang sama. yaitu memiliki 5 record pada masing-masing listnya. kemudian untuk memanggil fungsi createExcel, sebagai berikut.

createExcel("keluarga.xls",$keluarga);

sangat mudah bukan. Jalankan Server Apache anda letakan hasil kreasi file anda dengan nama test_excel.php kemudian buka dengan menggunakan browser dan sebuah file excel akan di download yang jika dibuka akan menampilkan isi dari array yang telah kita buat.

Cukup dengan mengetikan URL yang dituju di browser pada Localhost Apache maka sebuah File Excel bernama Keluarga.xls akan di download.

Cukup dengan mengetikan URL yang dituju di browser pada Localhost Apache maka sebuah File Excel bernama Keluarga.xls akan di download.

 

setelah sebuah file di download kita bisa membuka dengan menggunakan program office kesayangan  dan kita akan dapati sebuah file excel tersebut berisi data array kita yang sudah di format sedemikian rupa.

Data Hasil Download File Excel

Data Hasil Download File Excel

untuk source code lengkapnya dapat di download tinggal copy paste ke server apache. download di Dropbox atau Google Drive. oke mungkin lain kali akan saya share bagaimana menggunakan Framework. menggunakan Native punya keuntungan cepat, tetapi sangat terbatas, kalau mau extends fungsi lain seberti menambah baris dll, tentu harus mengoprek format excel, daripada susah – susah bikin mendhing pakai framework. tapi sekali lagi bukan berarti native tidak berguna, tetap berguna, tinggal pandai-pandainya kita memilih kapan memakai native dan kapan memakai Framework. Salam Goblooge dan Sampai jumpa di tulisan berikutnya (Membuat Download Excel Menggunakan Native PHP dengan Database MySQL). Okey Donkey.

Comments

total comments