Sunday, July 8, 2012

Skrip PHP untuk Export Database MySQL ke File Microsotf Excel

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 lainnya LunkSMS Gateway, LunkSMS Broadcast, dan  List Project .


Library PHPExcel ini juga lah 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 :

  1.  
  2. CREATE TABLE IF NOT EXISTS `anggota` (
  3. `anggota_id` int(10) NOT NULL AUTO_INCREMENT,
  4. `nama_anggota` varchar(30) NOT NULL,
  5. `jenis_kelamin` varchar(10) NOT NULL,
  6. `alamat_anggota` text NOT NULL,
  7. `no_telepon` varchar(15) NOT NULL,
  8. PRIMARY KEY (`anggota_id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
  10.  
  11. INSERT INTO `anggota` (`anggota_id`, `nama_anggota`, `jenis_kelamin`, `alamat_anggota`, `no_telepon`) VALUES
  12. (1, 'Daud Edison Tarigan', 'Pria', 'Jl Harmonika No 61 Medan', '0878680044'),
  13. (2, 'Andi Tarigan', 'Pria', 'Kuta Pengkih', '0878680044');
  14.  
Misalkan kita ingin mengekport database diatas kedalam bentuk file Microsoft Excel, kita dapat kita lakukan dengan kode dibawah ini :
  1.  
  2. <?php
  3. error_reporting(E_ALL);
  4. require_once 'Classes/PHPExcel.php';
  5. // Create new PHPExcel object
  6. $objPHPExcel = new PHPExcel();
  7.  
  8. mysql_connect("localhost", "root", "") or die(mysql_error());
  9. mysql_select_db("perpustakaan") or die(mysql_error());
  10. $query = "SELECT * FROM `anggota`";
  11. $hasil = mysql_query($query);
  12.  
  13. // Set properties
  14. $objPHPExcel->getProperties()->setCreator("Daud Edison Tarigan")
  15. ->setLastModifiedBy("Daud Edison Tarigan")
  16. ->setTitle("Office 2007 XLSX Test Document")
  17. ->setSubject("Office 2007 XLSX Test Document")
  18. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  19. ->setKeywords("office 2007 openxml php")
  20. ->setCategory("Test result file");
  21.  
  22. // Add some data
  23. $objPHPExcel->setActiveSheetIndex(0)
  24. ->setCellValue('A1', 'No')
  25. ->setCellValue('B1', 'Nama Anggota!')
  26. ->setCellValue('C1', 'Jenis Kelamin')
  27. ->setCellValue('D1', 'Alamat Anggota')
  28. ->setCellValue('E1', 'Nomor Telepon');
  29.  
  30. $rowNya = 2;
  31. $no = 0;
  32. while($row=mysql_fetch_array($hasil)){
  33. $no = $no +1;
  34. $objPHPExcel->setActiveSheetIndex(0)
  35. ->setCellValue("A$rowNya", $no)
  36. ->setCellValue("B$rowNya", $row['nama_anggota'])
  37. ->setCellValue("C$rowNya", $row['jenis_kelamin'])
  38. ->setCellValue("D$rowNya", $row['alamat_anggota'])
  39. ->setCellValue("E$rowNya", $row['no_telepon']);
  40. $rowNya = $rowNya + 1;
  41. }
  42.  
  43. // Rename sheet
  44. $objPHPExcel->getActiveSheet()->setTitle('Simple');
  45.  
  46. // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  47. $objPHPExcel->setActiveSheetIndex(0);
  48.  
  49. // Redirect output to a client’s web browser (Excel5)
  50. header('Content-Type: application/vnd.ms-excel');
  51. header('Content-Disposition: attachment;filename="database_anggota.xls"');
  52. header('Cache-Control: max-age=0');
  53.  
  54. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  55. $objWriter->save('php://output');
  56. exit;
  57. ?>
  58.  
Selanjutnya jika file PHP ini anda jalankan, maka secara otomatis database ini akan di import kedalam file Microsoft Excel dengan nama “data_anggota.xls”. Mari saya jelaskan bagian-bagian kode diatas. Kode dibawah ini adalah kode untuk memanggil Library PHPExcel, sehingga bisa digunakan di dalam aplikasi. Perhatikan kode ini :
  1.  
  2. error_reporting(E_ALL);
  3. require_once 'Classes/PHPExcel.php';
  4. // Create new PHPExcel object
  5. $objPHPExcel = new PHPExcel();
  6.  
Selanjutnya adalah kode untuk melakukan koneksi kedalam database “perpustakaan” . Perhatikan kode dibawah ini :
  1.  
  2. mysql_connect("localhost", "root", "") or die(mysql_error());
  3. mysql_select_db("perpustakaan") or die(mysql_error());
  4. $query = "SELECT * FROM `anggota`";
  5. $hasil = mysql_query($query);
  6.  
Selanjutnya adalah kode untuk membentuk Properti dari File Microsoft Excel yang akan kita bentuk. Propertis ini tidak akan kelihatan secara ‘nyata’ didalam file kita nantinya. Perhatikan kode dibawah ini :
  1.  
  2. $objPHPExcel->getProperties()->setCreator("Daud Edison Tarigan")
  3. ->setLastModifiedBy("Daud Edison Tarigan")
  4. ->setTitle("Office 2007 XLSX Test Document")
  5. ->setSubject("Office 2007 XLSX Test Document")
  6. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  7. ->setKeywords("office 2007 openxml php")
  8. ->setCategory("Test result file");
  9.  
Kode berikutnya adalah kode utama yang akan mengolah database menjadi kolom dan baris didalam file Microsoft excel. Kode inilah kode paling penting dari aplikasi ini. Nantinya untuk mengerjakan aplikasi serupa yang lebih kompleks anda akan banyak bermain di kode dibawah ini :
  1.  
  2. // Add some data
  3. $objPHPExcel->setActiveSheetIndex(0)
  4. ->setCellValue('A1', 'No')
  5. ->setCellValue('B1', 'Nama Anggota!')
  6. ->setCellValue('C1', 'Jenis Kelamin')
  7. ->setCellValue('D1', 'Alamat Anggota')
  8. ->setCellValue('E1', 'Nomor Telepon');
  9.  
  10. $rowNya = 2;
  11. $no = 0;
  12. while($row=mysql_fetch_array($hasil)){
  13. $no = $no +1;
  14. $objPHPExcel->setActiveSheetIndex(0)
  15. ->setCellValue("A$rowNya", $no)
  16. ->setCellValue("B$rowNya", $row['nama_anggota'])
  17. ->setCellValue("C$rowNya", $row['jenis_kelamin'])
  18. ->setCellValue("D$rowNya", $row['alamat_anggota'])
  19. ->setCellValue("E$rowNya", $row['no_telepon']);
  20. $rowNya = $rowNya + 1;
  21. }
  22.  
Setelah data-data MySQL disusun kedalam kolom dan baris Microsoft Excel, selanjutnya kita akan menempatkannya kedalam “sheet” File Ms Excel. Sheet ini adalah lembaran kerja dari File Microsoft Excel. Dalam hal ini, “sheet” nya kita beri nama “Simple” dan kita buat sebagai sheet awal. Perhatikan kode dibawah ini :
  1.  
  2. // Rename sheet
  3. $objPHPExcel->getActiveSheet()->setTitle('Simple');
  4.  
  5. // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  6. $objPHPExcel->setActiveSheetIndex(0);
  7.  
Setelah kode utama yang mengolah database menjadi baris dan kolom File Microsoft Excel, selanjutnya tugas kita adalah mencetak data-data tersebut menjadi file Microsotf Excel dengan nama tertentu, dalam hal ini kita buat namanya menjadi “database_anggota.xls”. Perhatikan kode dibawah ini :
  1.  
  2. // Redirect output to a client’s web browser (Excel5)
  3. header('Content-Type: application/vnd.ms-excel');
  4. header('Content-Disposition: attachment;filename="database_anggota.xls"');
  5. header('Cache-Control: max-age=0');
  6.  
  7. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  8. $objWriter->save('php://output');
  9. exit;
  10.  
Nah, sampai disini saya kira teman-teman sudah bisa mengerti konsep dari pembuatan aplikasi Export Database MySQL ini kedalam file Ms Excel. Mudah-mudahan artikel ini membantu teman-teman semuanya. Oh ya, sebenarnya saya ingin sekali memebrikan semua file tutorial ini untuk anda download secara gratis, namun karena besarnya file pendukung dari Library PHPExcel ini (sekitar 2,5MB), membuat saya urung untuk menyediakan file downloadnya. Namun bila rekan-rekan ingin mendapatkan file tutorial ini, silahkan tinggalkan pesan di form komentar dibawah dan sertakan alamat email anda, saya akan mengirimkan file tutorial ini ke alamat email anda secara gratis.

Sumber : http://aplikasiphp.com



Anda ingin mencari refrensi dan contoh program lengkap ? Kami ada. Sekarang Anda bisa mencari Download PHP Script di situs ini : http://www.bunafitkomputer.com. Koleksi program lengkap di sana, proyek PHP dan MySQL, juga jQuery dan Framework. Bukunya juga ada.

No comments:

Post a Comment