DY Shared Anything……


Memberi style font, cell, dan merge di PHPExcel

Posted in PHPExcel by dyahfrhcp on March 1, 2012

Pada Microsoft Excel terdapat banyak tool untuk membuat excel lebih indah daripada melihat

sekedar angka-angka saja, seperti memberi size font, underline font, memberi warna pada font,
dan lain-lainnya.
Pertanyaannya adalah :
Bisakah memberi style semacam itu di PHPExcel ??
Jawabannya adalah satu :
Bisa.
Lanjutkan !!
Lebih cepat lebih baik !!

Pembahasannya cukup sederhana saja langsung di bawah ini :

1. Include-kan file PHPExcel

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

/** PHPMailer */
include_once("PHPMailer/class.phpmailer.php");

2. Deklarasikan class untuk create file Excel dan create sheet

$excel = new PHPExcel();
$excel->setActiveSheetIndex(0);
$worksheet = $excel->getActiveSheet()->setTitle('SheetSatu');

Jika tidak ingin me-rename sheet maka tidak perlu menggunakan perintah setTitle().

3. Buat contoh teks untuk mengisi cell A1

$worksheet->SetCellValue('A1', 'Contoh Modifikasi Sebelum');

4. Buat perintah untuk mengisi color pada cell

$worksheet->getStyle('B5:AJ5')->getFill()->applyFromArray(
 array(
 'type' => PHPExcel_Style_Fill::FILL_SOLID,
 'startcolor' => array('rgb' => '660099')
 )
);

Code untuk memberi color pada cell dapat menggunakan code getFill()->applyFromArray(array())
seperti di atas atau dapat menggunakan contoh di bawah :

$color = $FontColor->setRGB('FFFF00');
$worksheet->getStyle('D6:AJ6')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$worksheet->getStyle('D6:AJ6')->getFill()->setStartColor($color);

5. Memberi style pada font

$styleArray = array(
 'font' => array(
 'underline' => PHPExcel_Style_Font::UNDERLINE_SINGLE,
 'name' => 'Times New Roman',
 'size' => 28,
 'italic' => true
 )
);
$worksheet->getStyle('B3')->applyFromArray($styleArray);
$worksheet->SetCellValue('B3','Contoh Modifikasi Sesudah');

Penjelasan urut satu persatu dari atas :

  • definisikan array $styleArray untuk masing-masing method untuk style font
  • memanggil method untuk underline pada font
  • menge-set type font jadi Times New Roman (jika tidak di set default font nya Calibri)
  • menge-set size jadi ukuran 28
  • menge-set font jadi italic (alias huruf miring)

Jika tidak menggunakan array dapat menggunakan script seperti di bawah :

$worksheet->SetCellValue('B3','Contoh Modifikasi Sesudah');
$worksheet->getStyle('B3')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$worksheet->getStyle('B3')->getFont()->setName('Times New Roman');
$worksheet->getStyle('B3')->getFont()->setSize(28);
$worksheet->getStyle('B3')->getFont()->setItalic(true);

6. Setting column width

$cells =
array('D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z
');

$number = 1;
foreach($cells as $cell) {
 $worksheet->getColumnDimension($cell)->setWidth(4);
 $worksheet->SetCellValue($cell.'5', $number);
 $number++;
}

Jika tidak mau repot-repot menulis script satu persatu untuk kolom yang berbeda2 dapat
menggunakan array.
Perintah untuk menge-set column width adalah $worksheet->getColumnDimension($cell)->setWidth(4);

7. Membuat merge cell

$worksheet->mergeCells('D2:Z2');

Perintah merge cell ini yang paling simpel cukup dengan method mergeCells dan menyebutkan range
cell yang akan di-merge.
Kalau mau melakukan unmerge cells ya tinggal perintah unmergeCells.
8. Create file excel ke format Excel 2003

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save($filename);
$excel->disconnectWorksheets();
unset($excel);

Untuk Script lengkapnya disini :

<?php

/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

/** PHPMailer */
include_once("PHPMailer/class.phpmailer.php");

$now = date("Y-M-d", time());

$cells =
array('D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z
');

$excel = new PHPExcel();
$excel->setActiveSheetIndex(0);
$worksheet = $excel->getActiveSheet()->setTitle('SheetSatu');

$worksheet->SetCellValue('A1', 'Contoh Modifikasi Sebelum');

$worksheet->getStyle('B5:AJ5')->getFill()->applyFromArray(
 array(
 'type' => PHPExcel_Style_Fill::FILL_SOLID,
 'startcolor' => array('rgb' => '660099'),
 'font' => array('bold' => true)
 )
);
$worksheet->getStyle('D4:AJ4')->getFill()->applyFromArray(
 array(
 'type' => PHPExcel_Style_Fill::FILL_SOLID,
 'startcolor' => array('rgb' => '4169E1')
 )
);

$FontColor = new PHPExcel_Style_Color();
$FontColor->setRGB("FFFFFF");
$worksheet->getStyle('B5:Z5')->getFont()->setColor($FontColor);
$worksheet->getStyle('D4')->getFont()->setColor($FontColor);
$worksheet->getStyle('B6:C6')->getFont()->setBold(true);
$worksheet->getStyle('B2:B3')->getFont()->setBold(true);

$worksheet->getColumnDimension('A')->setWidth(1);
$worksheet->getColumnDimension('B')->setWidth(4);
$worksheet->getColumnDimension('C')->setWidth(32);

$number = 1;
foreach($cells as $cell) {
 $worksheet->getColumnDimension($cell)->setWidth(4);
 $worksheet->SetCellValue($cell.'5', $number);
 $number++;
}

$worksheet->getStyle('B2')->getFont()->setSize(16);
$worksheet->getStyle('B2')->getFont()->setName('Arial');
$worksheet->SetCellValue('B2','Contoh Modifikasi Sesudah');

$worksheet->mergeCells('D2:Z2');

$styleArray = array(
 'font' => array(
 'underline' => PHPExcel_Style_Font::UNDERLINE_SINGLE,
 'name' => 'Times New Roman',
 'size' => 28,
 'italic' => true
 )
);
$worksheet->getStyle('B3')->applyFromArray($styleArray);
$worksheet->SetCellValue('B3','Contoh Modifikasi Sesudah');

$worksheet->SetCellValue('B4','Contoh Modifikasi Sesudah nyaaaaa');
$worksheet->getStyle('B4')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$worksheet->getStyle('B4')->getFont()->setBold(true);

$color = $FontColor->setRGB('FFFF00');
$worksheet->getStyle('D6:AJ6')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$worksheet->getStyle('D6:AJ6')->getFill()->setStartColor($color);

$filename = 'Contoh '.$now.'.xls';
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save($filename);
$excel->disconnectWorksheets();
unset($excel);

?>

Huff rada njelimet bukan ??
jika bukan berarti anda sudah expert di PHPExcel… (kalo saya kok kepala cenut2 ya apa saya sudah expert juga ?)
sumber :
http://bayu.freelancer.web.id/2010/07/16/phpexcel-advanced-read-write-excel-made-simple/
http://ducquang.net/post/6786442568/php-excel-examples
http://www.contao-docs.org/docs/PHPExcel/html/class_p_h_p_excel___style___font.html

Install Adempiere Server di Localhost (Windows)

Posted in Adempiere by dyahfrhcp on February 21, 2012

Adempiere oh adempiere….
apakah itu ??
makanan ?? minuman ?? merk laptop ??

Mari saya review sedikit, berdasarkan artikel dari Bung Wiki

Adempiere (dieja ah-DEHM-pyeh-reh), adalah proyek yang diprakarsai komunitas untuk mengembangkan dan mendukung solusi bisnis sumber terbuka dengan menyedikan fungsionalitas sebuah enterprice resource planning (ERP), customer relationship management (CRM), dan suplay chain managemnet (SCM). Proyek ADempiere didirikan bulan September 2006 sebagai tindak lanjut ketidak sepakatan para pengembang compiere dengan perusahaan komersil dibelakangnya : Compiere inc. Pengembang proyek ADempiere adalah murni open source menggunakan kode basis seputar proyek compiere.

Untuk yang sedang belajar ERP atau sedang menimbang-nimbang akan menggunakan ERP apa untuk perusahaan mungkin Adempiere bisa dijadikan “Projek Coba Coba”, karena Adempiere adalah Open Source (alias gratisss alias free bro) jadi untuk mencoba mengoprek2 atau sekedar input2 sembarangan tidak akan diributkan masalah license.
Untuk database sendiri Adempiere compatible dengan database open source (gratisan maningggg) seperti PostgreSQL, MySQL, atau Oracle Express (eits Oracle kan bayar ?? ooow tidak untuk yang express).

Jadi pembahasan kali ini bukan tentang teori ERP nya karena saya anggap anda semua sudah membaca dan fasih tentang ERP atau malah sudah mahir software ERP yang lain.
Yang akan dibahas adalah cara install Adempire di komputer / laptop lokal anda dengan OS Windows.
Database yang akan saya gunakan adalah Oracle XE alias Xpress, memang Oracle XE tidak akan sebagus Oracle yang berbayar namun jika hanya untuk pembelajaran database ini sudah lebih dari memuaskan.

Langsung saja kita simak :

1. Download dulu Adempiere untuk Server dan Database nya
Yang saya pakai sekarang versi 342s alias versi stabil, versi yang lebih baru 354a alias alpha masih dalam pengembangan.
Silakan pilih sendiri versi yang anda mau disini :
http://sourceforge.net/projects/adempiere/files/ADempiere%20Official%20Release/

2. Install Database anda
Kalau anda menggunakan Oracle XE maka dapat dilihat cara instalasinya disini
http://eecchhoo.wordpress.com/2009/03/08/menginstall-oracle-database-10g-express-edition/

3. Install JDK alias Java SE
Untuk menjalankan Adempiere tidak cukup hanya dengan JRE tapi perlu JDK juga, kalau belum ada silakan download disini :
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Saran saya jika OS anda adalah WIn Vista ke atas maka perlu menggunakan JDK versi 6, tapi jika OS anda (hanya) Win XP bisa menggunakan JDK versi 5 (versi jadul)

Selesai menginstall tool2 yang diperlukan saatnya beralih ke setting Adempiere….

4. Setup Adempiere dari file .bat
Setup dan install adempiere ada 2 cara, yang otomatis (tinggal klik next tau2 udah finish) atau manual, yang saya terangkan adalah install manual.

Extract Adempiere.zip anda lalu pindahkan folder Adempiere ke drive C:\
Masuk ke folder Adempiere maka anda akan menemukan file RUN_setup.bat
Lalu settinglah kurang lebih seperti yang ada di screen di bawah :

Point-point yang penting :
Java Home : adalah folder instalasi JAVA anda, jika anda instal JDK di C:\ maka ubahlah menjadi C:\Java\jdk1.6.0_17
Adempiere Home : adalah folder tempat anda meletakkan file untuk run aplikasi Adempiere (file RUN_Adempiere.bat maksudnya)
Application Server : biasanya otomatis sesuai nama PC/laptop anda
Coba perhatikan web port dan SSL, defaultnya adalah port 80 dan 443, pertanyaannya ??
Kenapa tidak pakai port default saja ??
Karena dalam laptop saya juga terdapat aplikasi web server yang lain maka kedua port tersebut tidak bisa digunakan, makanya saya ubah menjadi 8083 dan 8443
System password : password root/system pada database anda
Database password : default nya adalah “adempiere” (kalo ngetik jangan pake tanda kutipnya)

Test lalu Save

5. Import database bawaan Adempiere
Masuk ke folder Adempiere\utils\ temukan file RUN_ImportAdempiere.bat
Run file tersebut sampai selesai setelah selesai maka tabel di adempiere akan terisi dengan data dummy.

6. Setup Adempiere untuk login ke aplikasi
Jalankan file RUN_Adempiere.bat lalu akan muncul seperti screen di bawah :

Lalu klik gambar PC (emang itu gambar PC ya?? ) tombol di sebelah kanan tulisan Server hingga muncul form untuk setting Koneksi seperti screen di bawah :


Klik Test Database sampai tanda silang merah berubah jadi contreng hijau, lalu klik tombol OK (contreng hijau)

7. Maka anda sudah bisa login ke aplikasi Adempiere
Jika setelah login bisa muncul screen seperti di bawah maka anda sudah dapat login ke aplikasi

Sipppp…….
Sekian tutorial, artikel selanjutnya akan membahas penggunaan window-window (bahasa lainnya FORM) di Adempiere

sumber :
http://id.wikipedia.org/wiki/Adempiere

Membaca Email dengan IMAP PHP

Posted in PHP IMAP by dyahfrhcp on February 15, 2012

Membaca inbox email dengan imap PHP

Salam super….
Kali ini bahasan masih seputar dunia PHP,
dan yang akan dibahas tentang baca inbox email dari PHP menggunakan IMAP

Yang akan saya contohkan adalah membaca email inbox dari server email (bukan email dari google, yahoo, dll) karena pembahasan membaca email di google pasti sudah banyak artikelnya.

Tanpa basa basi langsung saja ke pembahasannya, cap cusss…..

Pastikan di web server anda memiliki fasilitas imap, cek di file PHP.ini
Jika anda menggunakan XAMPP PHP.ini ada di folder C:\xampp\php, dan biasanya secara default imap sudah unticked disitu (alias dibuka tanda ; nya)
Jika anda menggunakan AppServ file PHP.ini ada di folder C:\WINDOWS. carilah tulisan extension=php_imap.dll jika disitu terhidden (bahasane apa sih susah ?? ) maka hilangkan lah tanda ; supaya tidak menjadi comment, jangan lupa untuk merestart service setelah melakukan perubahan pada PHP.ini atau file-file lain di web server.

Ketahuilah domain email anda, contohnya mail.warungtegal.com atau http://www.warungtegal.com.
Lalu cari tahu apakah email anda menggunakan enkripsi SSL atau tls, dan pastinya hapalkan password email anda (emang salah password ga bisa muncul emailnya ? woalah sopo iki sing tekon gemblung tenan).

Perlu dicek juga apakah email langsung di download ke Outlook atau tidak, karena imap membaca email dari server. Jadi pada saat mendownload email settinglah di outlook untuk tetap save email ke server.

Untuk code nya mari kita lihat di bawah ini :

1. Buatlah host email, username, dan password untuk email anda

$user = "dy@warungtegal.com";
$pass = "warteg";
$imap_host = "{mail.warungtegal.com/imap/ssl/novalidate-cert}";
$imap_folder = "INBOX";

Kebetulan email server saya menggunakan enkripsi SSL jadi imap_host menggunakan SSL, jika anda tidak menggunakan SSL / TLS maka dapat dirubah menjadi mail.warungtegal.com/imap/notls.
Perhatikan penambahan perintah novalidate-cert, perintah tersebut berfungsi mengabaikan validasi certificate pada SSL atau TLS.

2. Selanjutnya gunakan perintah imap_open untuk membuka imap host dan membaca email di inbox

$mbox = imap_open($imap_host.$imap_folder, $user, $pass) or die("can't connect: " . imap_last_error());
$MC = imap_check($mbox);
$result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);

Fungsi imap_check berfungsi memberikan informasi nama inbox dan jumlah email alias pesan. Sedangkan imap_fetch_overview berisi informasi tentang email seperti subject, sender, to, email date, namun tidak berisi body emailnya (Jadi kaya header email ya ? betul sekali )

3. Menampilkan header email tersebut yang berupa array

foreach($result as $overview) {
 $message_id = $overview->msgno;
 $msg_id = imap_uid($mbox,$message_id);

$subject = $overview->subject;
 $header = imap_header($mbox,$message_id);
 $from = $header->from;
 $to = $header->to;

$emaildate1 = strtotime($header->date);
 $emaildate = date("Y-m-d H:i:s",$emaildate1);

 echo "Ini adalah message_id ".$message_id.". Dan ini adalah imap_msgno ".$msg_id."<br>";
 echo "Subject : ".$subject."<br>";
 echo "From : ".$from."<br>";
 echo "From : ".$to."<br>";
 echo "Date : ".$emaildate."<br>";
}

Sesudah dicoba untuk compile nanti akan terlihat alamat email from dan to nya sekedar nama, pertanyaannya :
Kalau saya mau alamat email nya gimana dunk ??
maka rubahlah sedikit dengan menambahkan karakter @ dan host seperti ini
$from = $header->from[0]->mailbox.”@”.$header->from[0]->host;
$to = $header->to[0]->mailbox.”@”.$header->to[0]->host;
Alamat from dan to yang ditampilkan hanya satu saja dari top of header email, kenapa begitu ?? penjelasannya akan dibahas di artikel selanjutnya.
Dan coba cek $message_id dan $msg_id, pertanyaannya :
Apa bedanya yaaa ??
Perbedaannya $message_id adalah no urut message tapi bukan id dari message, jadi begitu email terhapus dan ada email baru lagi maka no urut akan reset lagi dari awal, sedangkan $msg_id adalah no urut imap message, ini bisa dianggap sebagai id dari message namun akan berubah jika kita menggunakan POP3.
Jadi sejak awal pilih lah menggunakan IMAP atau POP3.

4. Tutup koneksi ke imap nya

imap_close($mbox);

Pembahasan selesai maka code lengkapnya ada di bawah berikut ini :

<?
$user = "dy@warungtegal.com";
$pass = "warteg";
$imap_host = "{mail.warungtegal.com/imap/ssl/novalidate-cert}";
$imap_folder = "INBOX";

$mbox = imap_open($imap_host.$imap_folder, $user, $pass) or die("can't connect: " . imap_last_error());
$MC = imap_check($mbox);
$result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);

foreach($result as $overview) {
 $message_id = $overview->msgno;
 $msg_id = imap_uid($mbox,$message_id);

$subject = $overview->subject;
 $header = imap_header($mbox,$message_id);
 $from = $header->from;
 $to = $header->to;

$emaildate1 = strtotime($header->date);
 $emaildate = date("Y-m-d H:i:s",$emaildate1);

echo "Ini adalah message_id ".$message_id.". Dan ini adalah imap_msgno ".$msg_id."<br>";
 echo "Subject : ".$subject."<br>";
 echo "From : ".$from."<br>";
 echo "From : ".$to."<br>";
 echo "Date : ".$emaildate."<br>";
}

imap_close($mbox);

?>

sumber :
http://stackoverflow.com/questions/3435293/php-imap-get-from-email-address
http://bayu.freelancer.web.id/2010/11/05/akses-gmail-menggunakan-phpimap/
http://tinsology.net/2009/04/accessing-email-through-imap-using-php/

Menambah sheet baru di Excel dengan PHPExcel

Posted in PHPExcel by dyahfrhcp on February 10, 2012

Postingan ke 3 ini masih membahas PHPExcel ( baru belajar PHPExcel doang ya ? iya pakšŸ˜€ )
Kali ini yg akan dibahas adalah sesuai judul nya, dan sedikit pencerahannya.

Berikut langkah-langkah nya :

1. Seperti biasa include kan lah file PHPExcel nya.

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

2. Ketik code untuk membuat class PHPExcel()

$excel = new PHPExcel();

3. Ini nih bagian yang penting, ketik code untuk create sheet

$excel->createSheet(0);
$sheet1 = $excel->getSheet(0)->setTitle('Sheet Pertama');
$excel->createSheet(1);
$sheet2 = $excel->getSheet(1)->setTitle('Sheet Kedua');

Untuk create sheet menggunakan code $excel->createSheet(0); .
Indeks dimulai dari 0 untuk sheet pertama, 1 untuk sheet kedua dst…..

Disini sudah selesai sebenarnya bahasan untuk create sheet baru di excel, tapi pertanyaanya :
Bagaimana cara saya mengisi value pada masing2 sheet ?? saya kan mau value yang berbeda untuk masing2 sheet ??
Oke cing, dibahas di nomor selanjutnya.

4. Memberi value pada masing-masing sheet

$excel->getSheetByName('Sheet Pertama')->SetCellValue('A1', 'ini adalah sheet pertama lo');
$excel->getSheetByName('Sheet Kedua')->SetCellValue('A1', 'ini adalah sheet kedua lo');

Di code diatas dilakukan pencarian nama sheet dulu setelah itu di set value nya.
Hati2 dengan nama sheet nya! ingat ini adalah PHP jadi bersifat case sensitive, harus persis huruf kapital/kecilnya.
Pertanyaanya :
Kan ada 3 sheet yang dicreate bagaimana cara saya bisa balik ke sheet pertama ??
Bahas lagi di bawah…..

5. Menge-set sheet yang aktif

$excel->setActiveSheetIndex(0);

Indeksnya sama seperti penjelasan nomor 3

6. Create format excel

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save('Tes.xls');

Jika ada pertanyaan lagi, “Bagaimana jika saya ingin format XLSX (Office 2007) ??” maka jawabannya :
baca blog saya sebelumnya…..šŸ˜›

Mau code lengkapnya ??
monggo…….

<?

/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

$excel = new PHPExcel();
$excel->createSheet(0);
$sheet1 = $excel->getSheet(0)->setTitle('Sheet Pertama');
$excel->createSheet(1);
$sheet2 = $excel->getSheet(1)->setTitle('Sheet Kedua');

$excel->getSheetByName('Sheet Pertama')->SetCellValue('A1', 'ini adalah sheet pertama lo');
$excel->getSheetByName('Sheet Kedua')->SetCellValue('A1', 'ini adalah sheet kedua lo');

$excel->setActiveSheetIndex(0);

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save('Tes.xls');
$excel->disconnectWorksheets();
unset($excel);

?>

Semoga artikel yang mudah ini bermanfaat, saya hanya share yang mudah-mudah saja karena yang sulit berawal dari yang mudah (sok idih….)
sumber : http://phpexcel.codeplex.com/discussions/72811

Membuat File Excel dari Tabel PHPExcel

Posted in PHPExcel by dyahfrhcp on February 8, 2012

Setelah kemarin posting cara membuat file excel dengan PHPExcel (tanpa ada data nya) sekarang saya akan share cara membuat file excel yang datanya didapat dari tabel alias konek ke database.
Berikut langkah-langkah nya, kalo ada yang kurang jelas bisa dicari di mbah google :

1. Membuat tabel student

CREATE TABLE `tb_student` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nim` VARCHAR( 20 ) NOT NULL ,
`nama` VARCHAR( 50 ) NULL ,
`alamat` TEXT NULL ,
`tempat_lahir` VARCHAR( 50 ) NULL ,
`tanggal_lahir` DATETIME NULL ,
UNIQUE (
`nim`
)
) ENGINE = innodb;

Jangan lupa untuk set ENGINE = innodb supaya tabel dapat dikonekkan ke tabel lain (walau di artikel ini tidak dibutuhkan tabel lain, namanya juga contoh)

2. Isi tabel student

INSERT INTO `db_example`.`tb_student` (
`id` ,
`nim` ,
`nama` ,
`alamat` ,
`tempat_lahir` ,
`tanggal_lahir`
)
VALUES (
NULL , '12300045', 'Sri', 'Bandung', 'Bogor', '1990-02-01 16:26:30'
);

3. Buat koneksi database di file PHP

Disini saya pakai database MySQL, untuk koneksi ke database lain akan dibahas di postingan lain (kapan ya bikinnya…)

<?
$username = "root";
$password = "blablabla";
$host = "localhost";
$db_name = "db_example";
$conn = mysql_connect($host,$username,$password) or die ("cannot connect host! ");
$db = mysql_select_db($db_name) or die ("cannot connect database! ");
?>

4. Buat perintah/query untuk menampilkan isi table

$result = mysql_query("SELECT nim ,nama ,alamat ,tempat_lahir ,tanggal_lahir FROM tb_student");

Kenapa tidak pakai SELECT * ?? karena kolom id tidak saya butuhkan maka saya hanya pilih kolom yang dibutuhkan supaya query lebih cepat.

5. Buat perintah untuk menge-set value di excel

$worksheet->SetCellValue('A1', 'Student Report');
$worksheet->SetCellValue('B2', 'NIM');
$worksheet->SetCellValue('C2', 'Nama');
$worksheet->SetCellValue('D2', 'Alamat');
$worksheet->SetCellValue('E2', 'Tempat');
$worksheet->SetCellValue('F2', 'Tanggal Lahir');

Hmmmm sampai sini kelihatannya lancar, tapi pertanyaannya :
Bagaimana cara untuk setting cell nya supaya datanya bisa menurun secara otomatis ?? Iya kalau record tabel cuma ada 5 kalo ada 1000 gimana ??
Bisa dunk, dengan perintah for tentu saja.

$number = mysql_num_rows($result) + 2;
$no = 1;
 for ( $i=3; $i<=$number; $i++ ) {
 $rows = mysql_fetch_array($result);
 $tanggal_lahir = date('d M Y H:i', strtotime($rows['tanggal_lahir']));
 $worksheet->SetCellValue('A'.$i,$no);
 $worksheet->SetCellValue('B'.$i,($rows['nim']));
 $worksheet->SetCellValue('C'.$i,($rows['nama']));
 $worksheet->SetCellValue('D'.$i,($rows['alamat']));
 $worksheet->SetCellValue('E'.$i,($rows['tempat_lahir']));
 $worksheet->SetCellValue('F'.$i,($tanggal_lahir));
 $no++;
 }

Jadi $number adalah jumlah record dari tabel ditambah 2, kenapa ditambah 2 ??
Karena start menampilkan data tidak pada cell A1 tapi pada A3.

Berikut adalah source yang utuh :

<?
$username = "root";
$password = "blablabla";
$host = "localhost";
$db_name = "db_example";
$conn = mysql_connect($host,$username,$password) or die ("cannot connect host! ");
$db = mysql_select_db($db_name) or die ("cannot connect database! ");

$result = mysql_query("SELECT nim ,nama ,alamat ,tempat_lahir ,tanggal_lahir FROM tb_student");

$excel = new PHPExcel();
$excel->setActiveSheetIndex(0);
$worksheet = $excel->getActiveSheet();

$worksheet->SetCellValue('A1', 'Student Report');
$worksheet->SetCellValue('B2', 'NIM');
$worksheet->SetCellValue('C2', 'Nama');
$worksheet->SetCellValue('D2', 'Alamat');
$worksheet->SetCellValue('E2', 'Tempat');
$worksheet->SetCellValue('F2', 'Tanggal Lahir');

$number = mysql_num_rows($result) + 2;
$no = 1;
 for ( $i=3; $i<=$number; $i++ ) {
 $rows = mysql_fetch_array($result);
 $tanggal_lahir = date('d M Y H:i', strtotime($rows['tanggal_lahir']));
 $worksheet->SetCellValue('A'.$i,$no);
 $worksheet->SetCellValue('B'.$i,($rows['nim']));
 $worksheet->SetCellValue('C'.$i,($rows['nama']));
 $worksheet->SetCellValue('D'.$i,($rows['alamat']));
 $worksheet->SetCellValue('E'.$i,($rows['tempat_lahir']));
 $worksheet->SetCellValue('F'.$i,($tanggal_lahir));
 $no++;
 }

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save('tes.xlsx');
$excel->disconnectWorksheets();
unset($excel);

?>

This is it, mudah bukan ??

selamat mencoba……

Membuat file excel di PHP dengan PHPExcel

Posted in PHPExcel by dyahfrhcp on February 8, 2012

Setelah mencari-cari di om google + kemana2 akhirnya ketemu cara yang lebih praktis dan memuaskan (gratis pula) untuk create file Excel di PHP.

Tool yang dimaksud adalah : PHPExcel.

Beliau adalah tools gratisan dariĀ codeplex.com, walau gratis tapi mutu ga gratisan cing ! Terbukti pada saya yang sudah memakai dan membuktikan kehandalannya, misalpun ada kesulitan tinggal cari solusinya di google/ yahoo/ bing/ search engine lainnya.

software nya dapat didownload di siniĀ http://phpexcel.codeplex.com/releases/view/45412

Selanjutnya, saya akan share sedikit tutorial cara pakai phpexcel ini (berikut scriptnya supaya ga pada penasaran….)

1. Install dulu PHP dan kawan2 di PC anda (kalau belum ada bisa baca tutorial di blog lain ya)

2. Taruh folder PHPExcel di folder tempat web di posting (yang bener posting apa hosting ya ?), untuk pengguna AppServ taruhlah diĀ C:\AppServ\www\ , untuk pengguna XAMPP taruhlah diĀ C:\XAMPP\htdocs\, dst, ini sebenarnya ga wajib, folder PHPExcel boleh ditaruh dimana saja tapi untuk mempermudah coding nya taruhlah berbarengan dengan file .PHP nya.

3. include kan lah file2 dalam folder PHPExcel tersebut


error_reporting(E_ALL);

/** Include path **/
 ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
 include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
 include 'PHPExcel/Writer/Excel2007.php';

pastikan file PHPExcel.php dan folder PHPExcel ada di satu folder yang sama dengan php file kamu, lagi2 ga wajib, terserah mau ditaruh dimana tapi jangan lupa buat merubah include nya tujukan pada direktori yang benar (pasrah, suka2 aja yang penting bisa runningšŸ˜€ )

4. Berikutnya perintah untuk mendeklarasikan si excel (semoga bahasanya benar)


$excel = new PHPExcel();
$excel->setActiveSheetIndex(0);
$worksheet = $excel->getActiveSheet();

variabel $excel ga mutlak bisa diganti ke $create atau $bikinexcel atau apa aja lah….

Ketiga perintah diatas adalah untuk deklarasi class excel (maap lagi kl kata2 nya sok tau) dan menge-set sheet yang aktif (bahasa inggrisnya setting active sheet)

5. Berarti selanjutnya yang akan selalu terpakai untuk create tulisan dan coret2 di excel adalah variabelĀ $worksheet


$worksheet->SetCellValue('A1', 'Student Report');

Script diatas berarti setting value di cell A1 berisi tulisanĀ Student Report

6. Create format excel nya.

Ini yang paling penting, kalo perintah ini ga ada ya ga jadi deh excel nya (ya iyalah)


$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');

$objWriter->save('testing.xls');

$excel->disconnectWorksheets();

unset($excel);

Jika file PHP di run maka excel akan tercreate di folder yang sama, hmmmm….. pertanyaannya :

bagaimana jika saya mau save ke format XLSX ?? itu kan format XLS ??

Tinggal robah $objWriter = PHPExcel_IOFactory::createWriter($excel, ‘Excel5’); keĀ $objWriter = PHPExcel_IOFactory::createWriter($excel, ‘Excel2007’);

Hmmmm pertanyaan nya lagi :

Bagaimana jika saya mau excel nya nongol supaya saya bisa save as, seperti kalau download mp3 di 4shared (dunlut asli apa bajakan ?šŸ˜€ )


header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Tes.xlsx"');
$objWriter->save('php://output');

Ganti metode save langsung file name keĀ ‘php://output’ dan jangan lupa tambahkan script header ().

Berikut script lengkapnya supaya anda bisa langsung copast (kebiasaan saya jg gt, sukanya copas script yang utuh) :


<?
/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

$excel = new PHPExcel();
$excel->setActiveSheetIndex(0);
$worksheet = $excel->getActiveSheet();

$worksheet->SetCellValue('A1', 'Student Report');
$worksheet->SetCellValue('B1', 'NIM');
$worksheet->SetCellValue('B2', 'Nama');
$worksheet->SetCellValue('B3', 'Alamat');
$worksheet->SetCellValue('B4', 'Tempat');
$worksheet->SetCellValue('B5', 'Tanggal Lahir');

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save('tes.xls');
$excel->disconnectWorksheets();
unset($excel);

?>

Sekian postingan yang pastinya mudah ini.
Berikutnya saya akan share create excel dengan phpexcel yang datanya dari database alias ambil dari table.

Sumber :Ā http://phpexcel.codeplex.com/wikipage?title=Examples