Membuat script report php excel dengan content bergambar mengunakan library php-excel

Selamat berjumpa kembali dengan tutorial Media Kreatif, Berkenaan dengan beberapa permintaan pembaca tentang tutorial reporrt excel dengan gambar, kali ini kami akan membahas cara membuat report excel yang mengandung content gambar dengan menggunakan library php-excel

Sebelumnya, kita perlu mengetahui terlebih dahulu apa itu php-excel, php-excel merupakan library opensource yag dikembangkan oleh codeplex dengan alamat situs http://www.codeplex.com/PHPExcel. Untuk menggunakan library php-excel, kita memerlukan beberapa library aktif dalam server php, yaitu :

 

 

  • PHP version 5.2.0 atau diatasnya
  • PHP extension php_zip enabled
  • PHP extension php_xml enabled
  • PHP extension php_gd2 enabled (if not compiled in)

Setelah semua kebutuhan terpenuhi, sekarang coba kita lakukan langkah - langkah berikut :

Pada contoh kali ini kita akan mencoba membuat sebuah kasus report tabel siswa menjadi halaman excel yang memuat gambar logo dari instansi pada file excel tersebut. Harapan kami, dari contoh sederhana ini dapat anda kembangkan menjadi aplikasi yang lebih kompleks sesuai dengan kebutuhan pembaca dalam menyusun sebuah aplikasi

1. Download php-excel

PHP-EXCEL dapat didownload pada alamat berikut : PHP Excel - codeplex

2. Membuat database dan tabel siswa

Pada contoh kali ini, kami membuat contoh tabel dengan struktur sebagai berikut :

CREATE TABLE IF NOT EXISTS `siswa` (
  `noinduk` varchar(10) NOT NULL,
  `Nama` varchar(50) NOT NULL,
  `Alamat` varchar(150) NOT NULL,
  `TTL` varchar(100) NOT NULL,
  `Email` varchar(50) NOT NULL,
  `Passwd` varchar(32) NOT NULL,
  `Kelas` enum('1','2','3_A','3_S','3_0') NOT NULL,
  `Status` enum('0','1') NOT NULL,
  PRIMARY KEY  (`noinduk`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Adapun contoh struktur database sudah kami sertakan pada contoh aplikasi demo yang terdapat pada link download dibawah.

 

3. Membuat script koneksi ke database

<?php
$db_host	= 'localhost';
$db_usn		= 'root';
$db_pwd		= 'kutukupret';
$db_name	= 'tutorial';

if($conn=mysql_connect($db_host,$db_usn,$db_pwd)){
	$sel = mysql_select_db($db_name);
}
else{
	echo 'Error in db connection';
}
?>

Sesuaikan setting koneksi database dengan setting yang terdapat pada komputer pembaca

4. Membuat script report

Bagian ini merupakan bagian inti dari pembahasan kita mengenai php-excel. Kami telah melakukan modifikasi pada contoh aplikasi yang disertakan dari codeplex, dengan contoh aplikasi seperti terlihat pada contoh dibawah ini:

<?php

/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');

date_default_timezone_set('Asia/Jakarta');

/** Include PHPExcel */
require_once 'Classes/PHPExcel.php';

// Membuat script koneksi
require_once 'db.php';

// Membuat documen excel baru
echo date('H:i:s') , " Create new PHPExcel object" , EOL;
$objPHPExcel = new PHPExcel();

// Set Properti Documen excel yang akan dibuat
echo date('H:i:s') , " Set document properties" , EOL;
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
							 ->setLastModifiedBy("Maarten Balliauw")
							 ->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");
							 
//set table header
//Tabel akan kita mulai dari Kolom B10 dan seterusnya
$objPHPExcel->getActiveSheet()->setCellValue('B10', 'No');
$objPHPExcel->getActiveSheet()->setCellValue('C10', 'NIS');
$objPHPExcel->getActiveSheet()->setCellValue('D10', 'Nama');
$objPHPExcel->getActiveSheet()->setCellValue('E10', 'Alamat');
$objPHPExcel->getActiveSheet()->setCellValue('F10', 'T.Tgl lahir');
$objPHPExcel->getActiveSheet()->setCellValue('G10', 'Email');

// Add some data
echo date('H:i:s') , " Menampilkan bebarapa data dari tabel siswa" , EOL;
$query = mysql_query('select * from siswa');
//start data from row 11
$i = 11;
$no= 1;
while($data=mysql_fetch_array($query)){
	$objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $no);
	$objPHPExcel->getActiveSheet()->setCellValue('C'.$i, $data['noinduk']);
	$objPHPExcel->getActiveSheet()->setCellValue('D'.$i, $data['Nama']);
	$objPHPExcel->getActiveSheet()->setCellValue('E'.$i, $data['Alamat']);
	$objPHPExcel->getActiveSheet()->setCellValue('F'.$i, $data['TTL']);
	$objPHPExcel->getActiveSheet()->setCellValue('G'.$i, $data['Email']);
	$i++;
	$no++;
}

//Mengatur lebar cell pada documen excel
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(5);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);

// Set sheet yang aktif pada documen excel
$objPHPExcel->setActiveSheetIndex(0);

// Menambahkan file gambar pada document excel pada kolom B2
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Media Kreatif Indonesia');
$objDrawing->setDescription('Logo Media Kreatif');
$objDrawing->setPath('images/logo.jpg');
$objDrawing->setCoordinates('B2'); 
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

echo date('H:i:s') , " Write to Excel2007 format" , EOL;
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;

// Echo done
echo date('H:i:s') , " Done writing file" , EOL;
echo 'File has been created in ' , getcwd() , EOL;

Dari script diatas, ada beberapa point penting yang harus kita perhatikan, yaitu :

  1. require_once 'Classes/PHPExcel.php'; Pastikan script PHPExcel.php sesuai dengan path yang sudah kita sebutkan diatas, begitu juga dengan script db.php yang kita gunakan sebagai koneksi
  2. $objPHPExcel->getProperties() Merupakan bagian yang digunakan untuk setting properti documen excel yang akan dibuat. Properti documen akan terlihat seperti pada gambar dibawah ketika mouse diarahkan pada file excel.
  3. $objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $no); Merupakan bagian yang digunakan untuk memasukkan data pada cell excel, dimana perintah tersebut maksudnya : Kolom Bxx, akan di isi dengan data dari variabel $no dan seterusnya
  4. Pada bagian worksheet_drawing, pastikan alamat gambar benar - benar valid, jika alamat gambar tidak sesuai maka script akan menampilkan pesan eror
  5. Pada bagian save documen, $objWriter->save(str_replace('.php', '.xlsx', __FILE__)); file excel akan disimpan sesuai dengan nama script yang kita buat. jika kita hendak membuat nama lain yang tidak sama dengan nama script, kita bisa menggantinya seperti contoh berikut : $objWriter->save('siswa.xlsx');

Sekian dulu tutorial kami kali ini, jika ada beberapa hal yang belum dipahami dari pembahasan diatas, silahkan menuliskan permasalahan anda pada form komentar dibawah. Jangan lupa klik LIKE pada tombol dibawah jika pembaca merasa tulisan kami ini bermanfaat untuk pembelajaran pembaca sekalian.

Download contoh aplikasi report php excel dengan content gambar


Komentar pembaca

andikaKeren bngt ini source code nya.. membantu bngt aku buat aplikasiposting pada :2013-12-26 15:38:38
andreasmau tanya donk om, untuk mengubah ukuran gambar source codenya apa ya? mohon bantuannya..posting pada :2014-03-24 09:12:04
sugenk rSip gan,,mantap,,ijin sedot yah..... Gan,,Kalau mau ganti direktori penyimpananya gmn han?posting pada :2014-11-27 08:55:01
anungMakasih gan.... Saya sangat terbantuposting pada :2014-12-14 17:23:11
Syafira ArifianMau tanya, kenapa require_once nya error ya? Parse error: syntax error, unexpected T_REQUIRE_ONCE in C:xampphtdocsxxpantangmundur.php on line 53posting pada :2015-01-18 20:48:52
windykalau pengen multisheet bagaimana ya . mohon dibantuposting pada :2015-11-16 13:50:53
Kusniati RofiahGan, kalo muncul error kayak gini kenepa ya? Thanks :D Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:ServerxampphtdocsmsblapSim.php on line 43 Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in E:ServerxampphtdocsmsblapSim.php on line 43 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:ServerxampphtdocsmsblapSim.php on line 47posting pada :2015-12-20 00:56:25