Didalam mengolah database MySQL, sering sekali kita berhubungan dengan bagaimana cara menampilkan data sesuai dengan permintaan. Biasanya database MySQL ini akan kita tampilkan didalam halaman website kita. Namun ada kalanya, database MySQL yang sudah kita olah sedemikian rupa dengan PHP ingin ditampilakn dalam bentuk lain, misalnya dalam format PDF, file Microsoft Word, Excel dan lain sebagainya. Salah satau yang paling sering diminta adalah membuat tampilan data dalam file Microsoft Excel.
Sering sekali database yang diolah di dalam PHP diminta oleh user untuk di tampilkan dalam bentuk File Microsotf Excel. Dan ini biasanya adalah data yang lumayan banyak, sehingga kalau kita melakukan Copy + Paste datanya secara manual dari MySQL ke Ms Excel tentunya akan report dan lama. Disini kita membutuhkan aplikasi khusus yang berguna untuk melakukan Export database MySQL kedalam file Ms Excel. Untungnya, sudah banyak Library PHP yang bisa kita gunakan untuk melakukan tugas ini. Salah satunya adalah Library PHPExcel. Contoh aplikasi buatan saya yang sudah menerapkan trik ini adalah LunkSMS Gateway, LunkSMS Broadcast, dan kebanyakan List Project buatan saya.
Selain itu, trik ini juga saya terapkan di dalam buku pertama saya yaitu Membangun SMS Gateway Berbasis Web Menggunakan CodeIgniter. Dan berita gembiranya lagi, dibuku kedua saya yang akan membahas Aplikasi Perpustakaan Berbasis Web dengan CodeIgniter, trik ini juga akan saya gunakan.
Library PHPExcel ini jugalah yang akan kita gunakan pada tutorial ini untuk melakukan export database MySQL kedalam file Ms Excel. Untuk memulai tutorial ini, dimisalkan kita memiliki sebuah database “perpustakaan” yang memiliki table “anggota”. Tabel “anggota” ini kira-kira akan terlihat seperti kode dibawah ini :
CREATE TABLE IF NOT EXISTS `anggota` ( `anggota_id` int(10) NOT NULL AUTO_INCREMENT, `nama_anggota` varchar(30) NOT NULL, `jenis_kelamin` varchar(10) NOT NULL, `alamat_anggota` text NOT NULL, `no_telepon` varchar(15) NOT NULL, PRIMARY KEY (`anggota_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; INSERT INTO `anggota` (`anggota_id`, `nama_anggota`, `jenis_kelamin`, `alamat_anggota`, `no_telepon`) VALUES (1, 'Daud Edison Tarigan', 'Pria', 'Jl Harmonika No 61 Medan', '0878680044'), (2, 'Andi Tarigan', 'Pria', 'Kuta Pengkih', '0878680044');
<?php error_reporting(E_ALL); require_once 'Classes/PHPExcel.php'; // Create new PHPExcel object $objPHPExcel = new PHPExcel(); mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("perpustakaan") or die(mysql_error()); $query = "SELECT * FROM `anggota`"; $hasil = mysql_query($query); // Set properties $objPHPExcel->getProperties()->setCreator("Daud Edison Tarigan") ->setLastModifiedBy("Daud Edison Tarigan") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file"); // Add some data $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'No') ->setCellValue('B1', 'Nama Anggota!') ->setCellValue('C1', 'Jenis Kelamin') ->setCellValue('D1', 'Alamat Anggota') ->setCellValue('E1', 'Nomor Telepon'); $rowNya = 2; $no = 0; while($row=mysql_fetch_array($hasil)){ $no = $no +1; $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A$rowNya", $no) ->setCellValue("B$rowNya", $row['nama_anggota']) ->setCellValue("C$rowNya", $row['jenis_kelamin']) ->setCellValue("D$rowNya", $row['alamat_anggota']) ->setCellValue("E$rowNya", $row['no_telepon']); $rowNya = $rowNya + 1; } // Rename sheet $objPHPExcel->getActiveSheet()->setTitle('Simple'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); // Redirect output to a client’s web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="database_anggota.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; ?>
error_reporting(E_ALL); require_once 'Classes/PHPExcel.php'; // Create new PHPExcel object $objPHPExcel = new PHPExcel();
mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("perpustakaan") or die(mysql_error()); $query = "SELECT * FROM `anggota`"; $hasil = mysql_query($query);
$objPHPExcel->getProperties()->setCreator("Daud Edison Tarigan") ->setLastModifiedBy("Daud Edison Tarigan") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file");
// Add some data $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'No') ->setCellValue('B1', 'Nama Anggota!') ->setCellValue('C1', 'Jenis Kelamin') ->setCellValue('D1', 'Alamat Anggota') ->setCellValue('E1', 'Nomor Telepon'); $rowNya = 2; $no = 0; while($row=mysql_fetch_array($hasil)){ $no = $no +1; $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A$rowNya", $no) ->setCellValue("B$rowNya", $row['nama_anggota']) ->setCellValue("C$rowNya", $row['jenis_kelamin']) ->setCellValue("D$rowNya", $row['alamat_anggota']) ->setCellValue("E$rowNya", $row['no_telepon']); $rowNya = $rowNya + 1; }
// Rename sheet $objPHPExcel->getActiveSheet()->setTitle('Simple'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="database_anggota.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit;
Artikel ini menarik bagi Anda? Mari kita berdiskusi dan berbagi informasi terkait artikel ini dengan memberikan komentar di bawah ini. Mungkin saja tulisan yang saya sampaikan masih kurang tepat,
sehingga komentar dan perbaikan dari anda dapat memberikan masukan baru sehingga kita semua mendapatkan informasi yang benar-benar akurat. Silahkan komentari artikel ini menggunakan Account Sosial Media anda, namun hindari memberikan komentar yang menghina atau merendahkan pihak manapun.