Web Programming

Cara Termudah Export PHP menjadi File Excel

Buat Sebuah database mysql dengan nama ‘datasiswa’, field dan content nya seperti gambar dibawah ini:

Kali ini saya mencatat tentang membuat laporan excel dengan phpexcel. Jadi boleh dibilang setiap data yang ditampilkan di aplikasi kita berupa data, lalu ingin dijadikan file excel, maka dibutuhkan program untuk menjadikan data itu menjadi file excel. Nah disini, saya menggunakan phpexcel sebagai class php, lalu berikutnya kita code untuk menjadikan data yang dibutuhkan ke file excel.

Nah yang dibutuhkan adalah download terlebih dahulu phpexcel disini. Tenang, link tersebut tidak mengandung iklan ataupun berupa menghasilkan dolar. Di phpexcel itu, saya memakai yang versi 1.8.0. Silahkan download terlebih dahulu.

Saya buatkan 3 file (diluar file-file dari phpexcel itu), yaitu :

1. config.php, untuk konfigurasi database.

2. index.php, untuk menampilkan data

3. exportexcel.php, untuk membuat file excel dan mendownloadnya.

Untuk databasenya, saya  berinama “test“, dan tabelnya “datasiswa“. Yuk, langsung saja.

File config.php

  1. <?php
  2. /************* Ini untuk koneksi kedatabase nya **********/
  3. $server = “localhost”;
  4. $user = “root”;
  5. $pass = “”;
  6. $db = “test”;
  7. $database = new mysqli($server, $user, $pass, $db);
  8. /*********************************************************/
  9.  
  10. ?>

 

Untuk konfigurasi ini tergantung masing-masing settingan databasenya.

File index.php

  1. <?php
  2. /*******************************************
  3. Export Excel dengan PHPExcel
  4. Dibuat oleh : Danni Moring
  5. pemrograman : PHP
  6. ******************************************/
  7. include “config.php”;
  8. ?>
  9. <html>
  10. <head>
  11. <title>Export ke Excel dengan PHPEXCEL</title>
  12. </head>
  13. <body>
  14. <a href=“exportexcel.php”>[ Export ke Excel ]</a>
  15. <table border=“1”>
  16. <tr>
  17. <td><b>Nama</b></td>
  18. <td><b>Alamat</b></td>
  19. <td><b>Telp</b></td>
  20. </tr>
  21. <?php
  22. $strsql = “SELECT * from datasiswa”;
  23. if ( $res = $database->query($strsql) ) {
  24. while ($row = $res->fetch_assoc()) {
  25. ?>
  26. <tr>
  27. <td><?php echo $row[‘nama’] ?></td>
  28. <td><?php echo $row[‘alamat’] ?></td>
  29. <td><?php echo $row[‘telp’] ?></td>
  30. </tr>
  31. <?php
  32. }
  33. } else {
  34. ?>
  35. <tr>
  36. <td>Tidak ada data</td>
  37. </tr>
  38. <?php
  39. }
  40. /* tutup koneksinya */
  41. $database->close();
  42.  
  43. ?>
  44.  
  45. </body>
  46. </html>

File exportexcel.php

<?php
/*******************************************
    Export Excel dengan PHPExcel
 
    Dibuat oleh : Danni Moring
    pemrograman : PHP
******************************************/

include "config.php";
include "../PHPExcel.php";

date_default_timezone_set("Asia/Jakarta");

$excelku = new PHPExcel();

// Set properties
$excelku->getProperties()->setCreator("Danni Moring")
                         ->setLastModifiedBy("Danni Moring");

// Set lebar kolom
$excelku->getActiveSheet()->getColumnDimension('A')->setWidth(5);
$excelku->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$excelku->getActiveSheet()->getColumnDimension('C')->setWidth(70);
$excelku->getActiveSheet()->getColumnDimension('D')->setWidth(10);

// Mergecell, menyatukan beberapa kolom
$excelku->getActiveSheet()->mergeCells('A1 : D1');
$excelku->getActiveSheet()->mergeCells('A2 : D2');

// Buat Kolom judul tabel
$SI = $excelku->setActiveSheetIndex(0);
$SI->setCellValue('A1', 'Data-data siswa'); //Judul laporan
$SI->setCellValue('A3', 'No'); //Kolom No
$SI->setCellValue('B3', 'Nama'); //Kolom Nama
$SI->setCellValue('C3', 'Alamat'); //Kolom Alamat
$SI->setCellValue('D3', 'Telp'); //Kolom Telp

//Mengeset Syle nya
$headerStylenya = new PHPExcel_Style();
$bodyStylenya   = new PHPExcel_Style();

$headerStylenya->applyFromArray(
	array('fill' 	=> array(
		  'type'    => PHPExcel_Style_Fill::FILL_SOLID,
		  'color'   => array('argb' => 'FFEEEEEE')),
		  'borders' => array('bottom'=> array('style' => PHPExcel_Style_Border::BORDER_THIN),
						'right'		=> array('style' => PHPExcel_Style_Border::BORDER_MEDIUM),
						'left'	    => array('style' => PHPExcel_Style_Border::BORDER_THIN),
						'top'	    => array('style' => PHPExcel_Style_Border::BORDER_THIN)
		  )
	));
	
$bodyStylenya->applyFromArray(
	array('fill' 	=> array(
		  'type'	=> PHPExcel_Style_Fill::FILL_SOLID,
		  'color'	=> array('argb' => 'FFFFFFFF')),
		  'borders' => array(
						'bottom'	=> array('style' => PHPExcel_Style_Border::BORDER_THIN),
						'right'		=> array('style' => PHPExcel_Style_Border::BORDER_MEDIUM),
						'left'	    => array('style' => PHPExcel_Style_Border::BORDER_THIN),
						'top'	    => array('style' => PHPExcel_Style_Border::BORDER_THIN)
		  )
    ));

//Menggunakan HeaderStylenya
$excelku->getActiveSheet()->setSharedStyle($headerStylenya, "A3 : D3");

// Mengambil data dari tabel
$strsql	= "SELECT * from datasiswa";
$res    = $database->query($strsql);
$baris  = 4; //Ini untuk dimulai baris datanya, karena di baris 3 itu digunakan untuk header tabel
$no     = 1;

while ($row = $res->fetch_assoc()) {
  $SI->setCellValue("A".$baris,$no++); //mengisi data untuk nomor urut
  $SI->setCellValue("B".$baris,$row['nama']); //mengisi data untuk nama
  $SI->setCellValue("C".$baris,$row['alamat']); //mengisi data untuk alamat
  $SI->setCellValue("D".$baris,$row['telp']); //mengisi data untuk TELP
  $baris++; //looping untuk barisnya
}
//Membuat garis di body tabel (isi data)
$excelku->getActiveSheet()->setSharedStyle($bodyStylenya, "A4 : D$baris");

//Memberi nama sheet
$excelku->getActiveSheet()->setTitle('Datasiswa');

$excelku->setActiveSheetIndex(0);

// untuk excel 2007 atau yang berekstensi .xlsx
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename=datasiswa.xlsx');
header('Cache-Control: max-age=0');
 
$objWriter = PHPExcel_IOFactory::createWriter($excelku, 'Excel2007');
$objWriter->save('php://output');
exit;

?>

Hasilnya kira-kira seperti gambar dibawah ini, atau bisa klik disini untuk demo nya.




Source : dannimoring.net

Leave a Reply