Posting lalu, https://blogit.bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/ telah ditunjukkan bagaimana caranya membuat sebuah laporan download Excel dengan menggunakan php_writeexcel. Kali ini akan dilanjutkan dengan bagaimana menuangkan data dari MySQL database ke dalam file berformat XLS atau spreadsheet. Berikut sebuah contoh, misal kita memiliki sebuah tabel sebagai berikut, bernama tabel pegawai dalam sebuah database.
nip | nama | honor | status_ambil |
---|---|---|---|
10001 | Susanto | Rp. 1000000 | Belum |
10002 | Susanti | Rp. 1000000 | Sudah |
10003 | Marwoto | Rp. 2000000 | Sudah |
10004 | Gunadi | Rp. 1500000 | Belum |
10005 | Nur Eko | Rp. 1000000 | Belum |
Tabel dalam database MySQL tersebut akan kita tuangkan dalam sebuah file Excel dengan nama : laporan-tanggal-dd-mm-yy.xls.
Maka kita akan membuat sebuah script seperti berikut:
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_workbook.inc.php";
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_worksheet.inc.php";
if(mysql_connect( "localhost","user","pass" )){
mysql_select_db( "kepegawaian" );
}
$date = date('Y-m-d');
$fname = tempnam("/tmp", "laporan-tanggal-$date.xls"); //membuka sebuah file baru diletakkan dalam /tmp
$workbook = &new writeexcel_workbook($fname); //workbook diberinama
$worksheet = &$workbook->addworksheet(); //nambah worksheet
//tulis blok titel tabel
$worksheet->write(0, 0, "Data Pegawai PT anu");
$worksheet->write(2, 0, "NIP");
$worksheet->write(2, 1, "Nama");
$worksheet->write(2, 2, "Honor");
$worksheet->write(2, 3, "Status Ambil");
//title selesai
//mari query
$sql = "SELECT * FROM `pegawai`";
$q = mysql_query( $sql );
$i = 3; //ingat bahwa kolom sebenarnya adalah nilai i ditambah 1, karena dimulai dengan nol
while( $r = mysql_fetch_array( $q ) ){
$worksheet->write($i,0,$r['nip']);
$worksheet->write($i,1,$r['nama']);
$worksheet->write($i,2,$r['honor']);
$worksheet->write($i,3,$r['status_ambil']);
$i++;
}
$workbook->close(); //selesai tulis
//tuang data
header("Content-Type: application/x-msexcel; name=\"laporan-tanggal-$date.xls\"");
header("Content-Disposition: inline; filename=\"laporan-tanggal-$date.xls\"");
$fh=fopen($fname, "rb"); //membuka file namafile.xls , membacanya dan siap untuk mengolah dalam bentuk biner
fpassthru($fh); //menuangkan data yang ada di buffer
unlink($fname); //setelah terdownload, hapus file
Hasilnya kira-kira dapat diambil disini : https://blogit.bimosaurus.com/demo/export2.php. Format ini adalah setara dengan MS-Excel 2000/XP.
Posting selanjutnya adalah bagaimana memasukkan data dari XLS/Excel ke dalam database MySQL.. Tunggu posting tersebut
Semoga berguna.
saya memakai fungsi diatas tapi pesan error A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 3
Filename: libs/class.writeexcel_worksheet.inc.php
itu kenapa ya?
Line Number: 1209
Mas bonar, mungkin anda bisa melihat di artikel posting lain di blog ini juga yaitu di sini
https://blogit.bimosaurus.com/2012/04/21/menghilangkan-pesan-error-notice-undefined-variable
Nanti pada class.writeexcel_worksheet.inc.php ditambahkan saja
bisa juga diletakkan pada script utama yang memuat include 🙂
ma’af mas ini hanya suport untuk office 2003 kebawah ya,gimana caranya supaya bisa untuk yang 2007 keatas mohon pencerahan.terimakasih sebelumnya
Terimakasih mas komentarnya… Oke mas saya siapkan artikelnya… Semoga bisa secepatnya ya. Tools yang digunakan memang berbeda, tidak lagi dengan menggunakan writeexcel biasa, karena memang jenis Office 2007 adalah keluaran Microsoft untuk support dengan dotnet dan xml. Mohon bersabar ya mas
Mas, saya mau tanyak dong,
Bagaimana kita mau menampilkan data hanya data yang status_ ambil nya = ‘Belum’.
salam
Oh, untuk menampilkan data tersebut, kita tinggal menambahkan filternya di Querynya. Misal Query semula adalah :
menjadi
Bisa dicoba mas iyak
Mas.. gimana supaya hasil export excel nya kalau dalam bentuk tabel ada garisnya..
maaf,,
script di atas suda saya coba dan berhasil dengan format xlsx..
namun ketika program itu dijalankan maka auto download..
saya mau tanya nih gimana downloadnya ke directory lain jadi gak di dalam project
trimakasih
Bisa mas. Dengan cara setelah ada aksi, maka menambahkan script sintaks php yang berfungsi untuk memindahkan file ke tempat lain, akan saya siapkan artikel terkait 🙂
Selamat siang untuk bro bimo.
Mau nanya bro, ane pake framework codeigniter.
Nah, ane bingung gimana cara nya masukin ke dalem codeigniter nya.
sedangkan kalo ane coba bkin php baru program bisa jalan, tapi pas ane cobain ke dalam codeigniternya, kaga muncul.
Malah muncul pesan error seperti ini
”
A PHP Error was encountered
Severity: Warning
Message: include(../classes/PHPExcel.php): failed to open stream: No such file or directory
Filename: views/karyawan_area.php
Line Number: 96
”
dan juga
”
A PHP Error was encountered
Severity: Warning
Message: include(): Failed opening ‘../classes/PHPExcel.php’ for inclusion (include_path=’.;C:\xampp\php\PEAR’)
Filename: views/karyawan_area.php
Line Number: 96
”
lalu ada pesan fatal error : Fatal error: Class ‘PHPExcel’ not found in C:\xampp\htdocs\karyawan\application\views\karyawan_area.php on line 99
Terimakasih mas Chris. Untuk CodeIgniter agak berbeda dengan cara yang kita gunakan disini. CodeIgniter adalah framework yang sangat memperhatikan sekuritas dan sanitasi struktur framework. Jika kita gunakan program yang ada di sini kemudian dipindahkan di CodeIgniter tentunya tidak akan berfungsi dengan baik. CodeIgniter sendiri telah memiliki library sendiri yang biasanya diambilkan dari PEAR. PEAR, kalau saya lihat mas Chris menggunakan XAMPP tentu sudah include dengan PEAR itu.
Untuk yang saya lihat sementara, di program mas Chris terdapat kesalahan inclusion. Untuk inclusion ini pastikan bahwa application/config/config.php telah meng-enable hooks. Pastikan juga bahwa PHPExcel yang mas Chris gunakan ini telah disetting juga pada application/config/hooks.php
Cara men-settingnya di config saya mengubah value FALSE menjadi TRUE
$hook[‘phpexcel’][] = array(
‘class’ => ‘PHPexcel’,
‘function’ => ‘phpexcel’,
‘filename’ => ‘PHPExcel.php’,
‘filepath’ => ‘hooks’
);
lalu men-setting hook seperti diatas.
Apakah benar seperti itu ?
Lalu saya memasukkan directory file di include
include “../classes/PHPExcel.php”;
include “../classes/PHPExcel/Writer/Excel2007.php”;
ke dalam folder hook, apakah itu step yang benar ??
kalo exortnya per page bisa ga