Ekspor PHP ke Excel

Ekspor PHP ke Excel

Bagaimana cara melakukan ekspor data dari file.php untuk dijadikan ke dalam format ekstensi file.xls
Tutorial kali ini kita akan mencoba melakukan hal tersebut. Sangat di perlukan ketika kita ingin menampilkan data tersebut tidak dalam browser melainkan file yang berbeda (dalam hal ini format file .xls).

Baik untuk melakukan hal tersebut, persiapkan dulu databasenya yang ingin kita tarik(fetch). Kemudian jangan lupa untuk mendownload plugin PHPExcel, yang akan kita gunakan untuk melakukan ekspor data.

Lihat skrip berikut, sesuaikan dengan database yang sudah dibuat.

<?php

#buat koneksi database
include "koneksi.php";

#query sql mengambil data dari databse
$sql = "SELECT * FROM tbl_biodata ORDER BY id_pegawai DESC";
$query = mysql_query($sql) or die (mysql_error());

#sertakan path/lokasi plugin phpexcel
require_once dirname(__FILE__).'/phpexcel-new/Classes/PHPExcel.php';


$objPHPExcel = new PHPExcel();

// Set properties
$objPHPExcel->getProperties()->setCreator("Faroq")
								->setLastModifiedBy("Faroq Modif")
								->setTitle("Data Karyawan")
								->setSubject("Data Karyawan")
								->setDescription("Laporan Data Karyawan")
								->setKeywords("Data Karyawan Excel")
								->setCategory("Umum");


$row = 2; // mulai dari baris ke dua

//Tulis judul tabel

$objPHPExcel->setActiveSheetIndex(0)
			->SetCellValue('A'.$row, 'Nomor Urut')
			->SetCellValue('B'.$row, 'ID')
			->SetCellValue('C'.$row, 'Nama Pegawai')
			->SetCellValue('D'.$row, 'Alamat')
			->SetCellValue('E'.$row, 'Jenis Kelamin')
			->SetCellValue('F'.$row, 'Email')
			->SetCellValue('G'.$row, 'Tanggal Lahir')
			->SetCellValue('H'.$row, 'Divisi')
			->SetCellValue('I'.$row, 'Hobi');
			


$nomor = 1; //nomor urut
$row++;

//cetak dari database
while($data = mysql_fetch_array($query)){
	$objPHPExcel->setActiveSheetIndex(0)
			->SetCellValue('A'.$row, $nomor)
			->SetCellValue('B'.$row, $data['id_pegawai'])
			->SetCellValue('C'.$row, $data['nama_pegawai'])
			->SetCellValue('D'.$row, $data['alamat'])
			->SetCellValue('E'.$row, $data['jenis_kelamin'])
			->SetCellValue('F'.$row, $data['email'])
			->SetCellValue('G'.$row, $data['tgl_lahir'])
			->SetCellValue('H'.$row, $data['divisi'])
			->SetCellValue('I'.$row, $data['tbl_hobi']);

			$row++;
			$nomor++;//membuat nomor urut

}

//membuat nama worksheet
$objPHPExcel->getActiveSheet()->setTitle('Data Karyawan');
$objPHPExcel->setActiveSheetIndex(0);




// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Data Karyawan.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');

// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

Oke kita lihat penjalasan skripnya,

<?php

#buat koneksi database
include "koneksi.php";

#query sql mengambil data dari databse
$sql = "SELECT * FROM tbl_biodata ORDER BY id_pegawai DESC";
$query = mysql_query($sql) or die (mysql_error());

#sertakan path/lokasi plugin phpexcel
require_once dirname(__FILE__).'/phpexcel-new/Classes/PHPExcel.php';

Buat koneksinya, lalu jangan lupa untuk membuat query SQL, untuk memilih data dari tabel mana yang akan kita tampilkan.

Jangan lupa posisikan Plugin PHPExcel sejajar dengan file proses atau output hasil ekspor.

$objPHPExcel = new PHPExcel();

// Set properties
$objPHPExcel->getProperties()->setCreator("Faroq")
								->setLastModifiedBy("Faroq Modif")
								->setTitle("Data Karyawan")
								->setSubject("Data Karyawan")
								->setDescription("Laporan Data Karyawan")
								->setKeywords("Data Karyawan Excel")
								->setCategory("Umum");


$row = 2; // mulai dari baris ke dua

//Tulis judul tabel

$objPHPExcel->setActiveSheetIndex(0)
			->SetCellValue('A'.$row, 'Nomor Urut')
			->SetCellValue('B'.$row, 'ID')
			->SetCellValue('C'.$row, 'Nama Pegawai')
			->SetCellValue('D'.$row, 'Alamat')
			->SetCellValue('E'.$row, 'Jenis Kelamin')
			->SetCellValue('F'.$row, 'Email')
			->SetCellValue('G'.$row, 'Tanggal Lahir')
			->SetCellValue('H'.$row, 'Divisi')
			->SetCellValue('I'.$row, 'Hobi');
			


$nomor = 1; //nomor urut
$row++;

//cetak dari database
while($data = mysql_fetch_array($query)){
	$objPHPExcel->setActiveSheetIndex(0)
			->SetCellValue('A'.$row, $nomor)
			->SetCellValue('B'.$row, $data['id_pegawai'])
			->SetCellValue('C'.$row, $data['nama_pegawai'])
			->SetCellValue('D'.$row, $data['alamat'])
			->SetCellValue('E'.$row, $data['jenis_kelamin'])
			->SetCellValue('F'.$row, $data['email'])
			->SetCellValue('G'.$row, $data['tgl_lahir'])
			->SetCellValue('H'.$row, $data['divisi'])
			->SetCellValue('I'.$row, $data['tbl_hobi']);

			$row++;
			$nomor++;//membuat nomor urut

}

//membuat nama worksheet
$objPHPExcel->getActiveSheet()->setTitle('Data Karyawan');
$objPHPExcel->setActiveSheetIndex(0);

Memulai mencetak dengan melakukan pembuatan kolom pada tabel heading dan isi yang diambil dari tabel yang ada di database dengan menggunakan fungsi while.

Kemudian pada perintah diatas membuat nama sheet pada file yang akan di ekspor.

Penjelasan sekrip berikutnya adalah, untuk membuat output/ file berekstensi .xlsx atau file tersebut berformat file excel 2007.

// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Data Karyawan.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');

// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

Silahkan mencobanya teman-teman, dan sampai jumpa lagi di artikel tutorial yang berikutnya. Ciao…

Comments are closed.