Tunggu Sebentar ...
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
<?php /************* Ini untuk koneksi kedatabase nya **********/ $server = "localhost"; $user = "root"; $pass = ""; $db = "test"; $database = new mysqli($server, $user, $pass, $db); /*********************************************************/ ?>
Untuk konfigurasi ini tergantung masing-masing settingan databasenya.
File index.php
<?php /******************************************* Export Excel dengan PHPExcel Dibuat oleh : Danni Moring pemrograman : PHP ******************************************/ include "config.php"; ?> <html> <head> <title>Export ke Excel dengan PHPEXCEL</title> </head> <body> <a href="exportexcel.php">[ Export ke Excel ]</a> <table border="1"> <tr> <td><b>Nama</b></td> <td><b>Alamat</b></td> <td><b>Telp</b></td> </tr> <?php $strsql = "SELECT * from datasiswa"; if ( $res = $database->query($strsql) ) { while ($row = $res->fetch_assoc()) { ?> <tr> <td><?php echo $row['nama'] ?></td> <td><?php echo $row['alamat'] ?></td> <td><?php echo $row['telp'] ?></td> </tr> <?php } } else { ?> <tr> <td>Tidak ada data</td> </tr> <?php } /* tutup koneksinya */ $database->close(); ?> </body> </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.
Kalau ada yang salah, mohon dikoreksi.
Nb : oiya ini untuk excel yang berekstensi .xlsx ya.
bang, setelah berhasil ke export muncul begini Notice: Trying to access array offset on value of type int in /opt/lampp/htdocs/coba/PHPExcel-1.8/Classes/PHPExcel/Cell/DefaultValueBinder.php on line 82. gimana bang?
1. ini coding lama, jd sesuaikan versi
2. perhatikan pada setiap yang kyk gini mergeCells('A1 : D1') <- itu dirapatkan ya..sengaja saya ga rapatkan, krn di blog ini otomatis akan jd icon melet klo titik dua ketemu huruf "D"
datanya gak bisa tampil di excel bang, muncul warning ketika buka excel
"excel cannot open the file 'datasiswa-8.xlsx' because the format or file is not valid, Verify the file has not been corrupted and that the file extension matches the format of the file"
Mohon bantuannya gan. Makasih
udah sesuai contoh ? coba buat yang versi contoh, hasilnya error juga ga ?
bang klu no handphone kan depannya ada angka 0 itu gimana ngatasinnya biar ketampil? ak coba ox nggak bisa y hehee bantu dong
kalau saya coba tambahin tanda kutip satu ( ' ) sebelum nol ( 0 ) jadi '08123456789
mantab bang export excelnya ,
, klo readwrite file excell yg sudah ada pripun njih
Minta pencerahannya gan. Kan pas link export ke excelnya diklik, itu muncul komen kayak gini :
Fatal error: Uncaught exception 'PHPExcel_Exception' with message 'Cell coordinate can not be zero-length string' in C:\xampp\htdocs\phpexcel lap\Classes\PHPExcel\Cell.php:555 Stack trace: #0 C:\xampp\htdocs\phpexcel lap\Classes\PHPExcel\Worksheet.php(1289): PHPExcel_Cell::coordinateFromString('') #1 C:\xampp\htdocs\phpexcel lap\Classes\PHPExcel\Worksheet.php(1692): PHPExcel_Worksheet->cellExists('') #2 C:\xampp\htdocs\phpexcel lap\exportexcel.php(27): PHPExcel_Worksheet->mergeCells('A1 : D1') #3 {main} thrown in C:\xampp\htdocs\phpexcel lap\Classes\PHPExcel\Cell.php on line 555
itu gimana gan?
mergeCells('A1 : D1') itu dirapatkan aja antara A1 titik dua D1... itu saya renggangkan karena otomatis kedetek icon senyum ketika tanda titik dua berdempetan dengan huruf D
Gan punya saya error di mergeCells('A1 : D1') solusinya gimana gan
Saya sudah dirapatkan mergeCells ('A11') tapi masih error nij gan.mojon solusinya
Untuk mengubah format cell gimana gan? biat jadi format text semua.
coba lihat kesini https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/07-Accessing-Cells.md
Saya mau buat data laporan per siswa, otomatis saya gk make looping/while.
saya coba :
$niswa = @$_GET['id'];
$siswa = mysql_query("SELECT * FROM penilaian_sikap WHERE nis='$niswa'");
$row = mysql_fetch_array($siswa);
$objPHPExcel = new PHPExcel();
-----
-----
$SI = $objPHPExcel->setActiveSheetIndex(0);
$SI->setCellValue('B2'.$row['nama_siswa']);
$SI->setCellValue('B3'.$row['nis']);
$SI->setCellValue('A7'.$row['nilai_jurnal']);
$SI->setCellValue('B7'.$row['catatan']);
pas bagian memanggil data di databasenya kok g bisa ya?
muncul error "Uncaught exception 'PHPExcel_Exception' with message 'Invalid cell coordinate B2RITA MALIK' ".etc
mohon pencerahannya mas
makasih
coba ke dokumentasinya disini https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/07-Accessing-Cells.md
$SI->setCellValue('B2'.$row['nama_siswa']); ganti $SI->setCellValue('B2',$row['nama_siswa']); dan seterusnya.... pake "koma" setelah kolombaris 'B2'
Gan kalau boleh minta file php dan export DB nya sekalian... dalam bentuk rar. Thanks.
kalau code nya, silakan copy paste aja code yang saya tulis diatas...klo soal db, tinggal buat nama db "test", dan tabelnya "datasiswa". Fieldnya "nama", "alamat", "telp"....
kalo abis upload foto ke database bisa ga buat di eksport ke excel nya lagi, mohon pencerahan gan, soalnya ane bingung buat nampilin gambar tapi ambil gambar dari hasil upload yg kita save di mysql, terimkasih
maksudnya setiap export excel itu sebelumnya harus diupload foto gitu ? atau gimaa ? kalau mau nyisipkan gambar di excel pake phpexcel, coba lihat link ini http://stackoverflow.com/questions/27716946/adding-image-to-the-excel-in-phpexcel-in-php
bukan gan, jadi gini misal saya upload foto, lalu upload nya itu masuk ke database, setelah itu menampilkan lagi pas saya eksport ke excel, bisa ga yaaa, menyisipkan gambar tapi gambar nya ambil dari database beserta data lainnya gtuu
$res = $database->query($strsql);
ini query apa min..
ane coba error..
$database = new mysqli($server, $user, $pass, $db);
itu gak ditambahin garis bawah gan di tulisan (new.....mysqli)
soalnya ane coba juga error min...
Mohon pencerahannya
coba dlihat lagi mas code yang saya kasih ditulisan diatas.... pasti tahu $strsql itu apa
$database = new mysqli($server, $user, $pass, $db);
itu gak ditambahin garis bawah gan di tulisan (new.....mysqli)
kalau yang soal new mysqli silakan coba baca disini http://php.net/manual/en/mysqli.construct.php
baris ini tidak jalan :
$excelku->getActiveSheet()->setSharedStyle($headerStylenya, "A3 : C3");
ada error yang muncu ? ...Coba antara A3 : C3 itu dirapatkan...
Warning: include(../PHPExcel.php): failed to open stream: No such file or directory in C:\xampp\htdocs\print\exportexcel.php on line 10
Warning: include(): Failed opening '../PHPExcel.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\print\exportexcel.php on line 10
Fatal error: Class 'PHPExcel' not found in C:\xampp\htdocs\print\exportexcel.php on line 14
kalo kaya gini gimana ? terus file config.php, index.php, sama export.php itu dimasukin di dalem folder PHPExcel gt ta ?
itu udah ketahuan bukan penyebabnya ? "No such file or directory"
nih struktur folder contoh yang saya pakai :
- excel-phpexcel (ini folder)
------ contoh(ini folder)
--------- index.php
--------- config.php
--------- exportexcel.php
------ PHPExcel(ini folder)
--------- bblablablablla file2 dari PHPExcel
------ PHPExcel(ini file)
gimana mengatsi kalo kayak gitu gan aku juga eorror sama
Untuk menformat font, dari size, tipe font, gimana gan?
silakan search digoogle, https://www.google.co.id/?gws_rd=ssl#q=format+font+phpexcel
kalau ane pasang di website(hosting) untuk export pakai phpexcel malah keluar error "Warning: Cannot modify header information - headers already sent by"
itu permasalahan headernya kenapa?
coba kesini http://stackoverflow.com/questions/20647611/phpexcel-library-error-when-exporting-from-database
gan kenapa??
Fatal error: Uncaught exception 'PHPExcel_Exception' with message 'Cell coordinate can not be zero-length string' in C:\xampp\htdocs\testing\Classes\PHPExcel\Cell.php:555 Stack trace: #0 C:\xampp\htdocs\testing\Classes\PHPExcel\Worksheet.php(1289): PHPExcel_Cell::coordinateFromString('') #1 C:\xampp\htdocs\testing\Classes\PHPExcel\Worksheet.php(1692): PHPExcel_Worksheet->cellExists('') #2 C:\xampp\htdocs\testing\exportexcel.php(27): PHPExcel_Worksheet->mergeCells('A1 : D1') #3 {main} thrown in C:\xampp\htdocs\testing\Classes\PHPExcel\Cell.php on line 555
coba yang PHPExcel_Worksheet->mergeCells('A1 : D1') --> A1 : D1 itu dirapatkan...dan lainnya juga gitu
Fatal error: Uncaught exception 'PHPExcel_Exception' with message 'Cell coordinate can not be zero-length string' in C:\xampp\htdocs\testing\Classes\PHPExcel\Cell.php:555 Stack trace: #0 C:\xampp\htdocs\testing\Classes\PHPExcel\Worksheet.php(1289): PHPExcel_Cell::coordinateFromString('') #1 C:\xampp\htdocs\testing\Classes\PHPExcel\Worksheet.php(1692): PHPExcel_Worksheet->cellExists('') #2 C:\xampp\htdocs\testing\exportexcel.php(27): PHPExcel_Worksheet->mergeCells('A1 : D1') #3 {main} thrown in C:\xampp\htdocs\testing\Classes\PHPExcel\Cell.php on line 555
berhasil! sangat bagus jika kamu ajar juga bagaimana cara untuk import kembali apa yang kita export
Salam, say sudah coba source code dan berhasil untuk download, tetapi hasil file setelah download menjadi tidak terbaca
seperti
ÃÃà ¡±á;þÿ
¤°äUntitled Spreadsheet@perencanaan@[email protected]â¬Ãâ.Ã]Ã@â¬Ãâ.Ã]ÃþÿÃÃÃÅ.ââ+,ù®0¼HPX`hp
xŽä
WorksheetFeuilles de calcul
ÃÃB°=¼%r8X"1ÃÂCalibrià õÿ Ã
à à !
apa yang salah ya...mas
coba tarok code yg udah km buat, di pastebin...biar saya lihat
coba tes dulu demo saya..hasilnya error juga ga ditempatmu
coba tambahin satu baris diatas header :
----
ob_clean();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
Bisa work gan, tapi datanya sama sekali gak muncul di excelnya. cuma judul2 kolomnya aja yang muncul
coba di demo saya, kira2 hasilnya kebaca ga klo ditempatmu ?
error dengan extensi excel nya itu salah dimana nya ya bang? trims
pas di bagian --> $res = $database->query($strsql); dan while ($row = $res->fetch_assoc()) { ---> ko eror terus y gan..?. ini saya buat script export excel dengan nyontoh exportexcel.php di atas....
Kok di ane excelnya malah gk bisa di buka ya?
udah lihat demo nya ? nah hasil export dari demo bisa kebuka di excel ga ?
gan muncul kaya gini ya..
Fatal error: Uncaught exception 'PHPExcel_Exception' with message 'Cell coordinate can not be zero-length string' in D:\xampp\htdocs\arief\test\PHPExcel\Classes\PHPExcel\Cell.php:591 Stack trace: #0 D:\xampp\htdocs\arief\test\PHPExcel\Classes\PHPExcel\Worksheet.php(1282): PHPExcel_Cell::coordinateFromString('') #1 D:\xampp\htdocs\arief\test\PHPExcel\Classes\PHPExcel\Worksheet.php(1696): PHPExcel_Worksheet->cellExists('') #2 D:\xampp\htdocs\arief\test\tes6.php(27): PHPExcel_Worksheet->mergeCells('A1 : D1') #3 {main} thrown in D:\xampp\htdocs\arief\test\PHPExcel\Classes\PHPExcel\Cell.php on line 591
kira-kira knp ya
coba yang PHPExcel_Worksheet->mergeCells('A1 : D1') ---> A1 nya itu rapet dengan titik duanya ( : )..begitu juga dengan D1 nya karena itu sengaja saya jarangkan, klo dirapatkan otomatis kedetek emoticon... pokoknya yang berhubungan mergeCells coba dirapatkan...
btw kok ada PHPExcel_Worksheet->cellExists('') ini ya ? dan ada yang kosong juga...di contoh code saya itu engga ada... pokoknya coba lihat code saya dulu, tapi yang mergeCell nya dirapatkan untuk A1 misalnya....btw saya sulit mendeteksi error mu, karena saya engga tahu code mu.. bisa jadi tidak sama dengan code saya atau udah di modif lagi...
Keren bang , sangat bermanfaat ilmunya
sip banget gan... makasih banyak nih sangat bermanfaat.
oiya, kalo boleh saran nih, bisa ditambah source file nya,
jadi tar yang baca bisa tinggal import database, ekstrak file phpnya, jalanin phpnya, kelar.. heheh.
sama2...nah justru supaya sekalian otak2 atik sendiri makanya ga disertakan source nya hehe...biar lebih seru kan klo ngetik sendiri codenya
gan keluar error gini kenapa ya?
Warning: require(C:\xampp\htdocs\cel/PHPExcel/Autoloader.php) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs\cel\PHPExcel.php on line 32
Fatal error: require() [function.require]: Failed opening required 'C:\xampp\htdocs\cel/PHPExcel/Autoloader.php' (include_path='.;\xampp\php\PEAR') in C:\xampp\htdocs\cel\PHPExcel.php on line 32