[Contoh 3] Membuat Laporan Export Data dari MySQL ke Excel terencoding dengan PHP (no-pear)

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.

17 thoughts on “[Contoh 3] Membuat Laporan Export Data dari MySQL ke Excel terencoding dengan PHP (no-pear)

  1. 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

  2. ma’af mas ini hanya suport untuk office 2003 kebawah ya,gimana caranya supaya bisa untuk yang 2007 keatas mohon pencerahan.terimakasih sebelumnya

    1. 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

  3. Mas, saya mau tanyak dong,
    Bagaimana kita mau menampilkan data hanya data yang status_ ambil nya = ‘Belum’.

    salam

    1. Oh, untuk menampilkan data tersebut, kita tinggal menambahkan filternya di Querynya. Misal Query semula adalah :

      $sql = "SELECT * FROM `pegawai`";
      

      menjadi

      $sql = "SELECT * FROM `pegawai` WHERE `status_ambil`='Belum'";
      
      

      Bisa dicoba mas iyak

  4. 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

    1. 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 🙂

  5. 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

    1. 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

      1. 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 ??

Leave a Reply

Your email address will not be published. Required fields are marked *