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

Jika dalam posting lalu https://blogit.bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/ kita sudah belajar menggunakan php untuk melakukan export ke dalam file excel yang datanya diambil dari database, namun ternyata proses yang kita pelajari tersebut masih terdapat kekurangan. Kekurangannya yaitu bahwa data excel yang dihasilkan tidak terencoding dengan baik sebagaimana layaknya file excel. Excel yang dihasilkan hanyalah file text dalam bentuk table, yang disimpan sebagai xls atau excel spreadsheet. Untuk membuat exporting data dalam bentuk excel yang sebenarnya maka perlu tools yang berfungsi mengolah encoding data cell dan column ke dalam excel encoding sehingga data akan dapat di download dalam format excel. Dalam PHP-PEAR, fasilitas upload download excel ini jelas telah ada. Tutorial penggunaan PEAR menyusul. Kali ini kita akan belajar menggunakan fasilitas : php_writeexcel-0.3.0.tar.gz yang telah saya siapkan di https://blogit.bimosaurus.com/files/php_writeexcel-0.3.0.tar.gz.

Extractlah file tersebut ke dalam direktori yang anda suka. Kalau saya lebih suka memasukkan segala fasilitas ini ke dalam direktori libs. Sehingga akan terbentuk libs/php_writeexcel-0.3.0 . Untuk contoh scripting menggunaan php_writeexcel ini dasarnya adalah sebagai 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";

$fname = tempnam("/tmp", "namafile.xls"); //membuka sebuah file baru diletakkan dalam /tmp
$workbook = &new writeexcel_workbook($fname); //workbook diberinama
$worksheet = &$workbook->addworksheet(); //nambah worksheet

//tulis

$worksheet->write(0, 0,  "JUDUL diletakkan di kolom 1");
$worksheet->write(2, 0,  "title baris 3 kolom 1");
$worksheet->write(2, 1,  "title baris 3 kolom 2");
$i = 3;
while($i <= 10){
$kol = $i+1; // karena nomer kolom pertama adalah 0, maka $kol adalah 0+1
   $worksheet->write($i,0,"Ini Baris $kol Kolom ke 1");
   $worksheet->write($i,1,"Ini Baris $kol Kolom ke 2");
$i++;
}


$workbook->close();

header("Content-Type: application/x-msexcel; name=\"namafile.xls\"");
header("Content-Disposition: inline; filename=\"namafile.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


Contoh data ini dapat dilihat di https://blogit.bimosaurus.com/demo/export1.php. Untuk posting selanjutnya akan dicoba menuangkan data MySQL ke bentuk XLS MS Excel.

Semoga Berguna

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

  1. wah… artikel yang sangat bagus.., yang saya mau tanya bagaimana script misalkan judul di merge menjadi 3 cell trus bagaimana cara format font dan border??

    1. Untuk penjelasan ini mungkin perlu satu tutorial lagi yang sekarang sudah saya antrikan untuk masuk dalam posting selanjutnya. PHPExcelWriter memiliki fasilitas untuk MERGE, FORMAT FONT dan sekaligus memberikan border. Namun secara ringkas akan coba dijelaskan di sini:

      1. Merge dapat dilakukan dengan menuliskan pada dua atau tiga cell yang dimaksud, dengan penggabungan fungsi write() dan write_blank(). Sebagai contoh adalah :
        $sheet->write( 2 , 1 , "Kolom termerge" );
        $sheet->write_blank( 2,2 );
        
      2. Format Font merupakan satu opsi dalam fungsi write().
        $sheet->write( 1,2,"Text",$formatfont )
        

        Dengan $formatfont diset seperti berikut :

        $formatfont = $sheet->addformat(array(
                                                    bold    => 1,
                                                    italic  => 1,
                                                    color   => 'black',
                                                    size    => 18,
                                                    font    => 'Trebuchet MS'
                                                ));
        
        
      3. Border juga merupakan salah satu bagian dalam fungsi write(). Untuk contohnya, mungkin akan dipost pada satu posting sendiri.

      Mohon ditunggu ya mas mungkin dalam 1-2 hari, terimakasih telah mengunjungi blog ini

  2. mengapa di xampp ver 1.7.4 tidak jalan ya? waktu kita buka file excel nya isi yg sbenar nya tdk ada tp yg tertulis di file tersebut pesan error semua error semua

    1. Bisakah error messagenya dishare disini? Tapi sangat besar kemungkinan errornya adalah berkaitan dengan Deprecated Function Syntax, yaitu Fungsi Syntax PHP yang tidak lagi digunakan di versi terbaru karena alasan krusial seperti security, bug, dan crashed. Sebagai solusi bisa dua cara, yaitu:

      • Membuat fungsi syntax secara manual
      • Downgrade PHP
      • Mengubah script atau mengganti script

      Dalam hal ini sepertinya lebih mudah di angka 1 atau 3. Lain kali akan saya share tentang hal itu 🙂

  3. Deprecated: Assigning the return value of new by reference is deprecated in D:\xampp\htdocs\latihanphp\write_excel\export.php on line 6

    Deprecated: Assigning the return value of new by reference is deprecated in D:\xampp\htdocs\latihanphp\write_excel\php_writeexcel-0.3.0\class.writeexcel_workbook.inc.php on line 170

    Deprecated: Assigning the return value of new by reference is deprecated in D:\xampp\htdocs\latihanphp\write_excel\php_writeexcel-0.3.0\class.writeexcel_workbook.inc.php on line 190

    Deprecated: Assigning the return value of new by reference is deprecated in D:\xampp\htdocs\latihanphp\write_excel\php_writeexcel-0.3.0\class.writeexcel_workbook.inc.php on line 192

    Notice: Undefined offset: 3 in D:\xampp\htdocs\latihanphp\write_excel\php_writeexcel-0.3.0\class.writeexcel_worksheet.inc.php on line 1209

  4. ��ࡱ�>�� �������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ l �Sheet1B�=�%r8X”1���Arial1���Arial1���Arial1���Arial1���Arial1� �Arial��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� ��� @� � @� � H� �����8�������������������������������3f������ff���f����������������������������������̙��̙3f�3���������fff����3f3�f333�3�3f33�333� ‘Sheet1 l �*+����”dXX�?�? #JUDUL diletakkan di kolom 1title baris 3 kolom 1title baris 3 kolom 2Ini Baris 4 Kolom ke 1Ini Baris 4 Kolom ke 2Ini Baris 5 Kolom ke 1Ini Baris 5 Kolom ke 2Ini Baris 6 Kolom ke 1Ini Baris 6 Kolom ke 2Ini Baris 7 Kolom ke 1Ini Baris 7 Kolom ke 2Ini Baris 8 Kolom ke 1Ini Baris 8 Kolom ke 2Ini Baris 9 Kolom ke 1Ini Baris 9 Kolom ke 2 Ini Baris 10 Kolom ke 1 Ini Baris 10 Kolom ke 2 Ini Baris 11 Kolom ke 1 Ini Baris 11 Kolom ke 2)�?(�?’�?&�?��> � Root Entry������������Book ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
    Warning: unlink(C:\Documents and Settings\admin\Local Settings\Temp\nam3C.tmp): Permission denied in D:\xampp\htdocs\latihanphp\write_excel\export.php on line 29

Leave a Reply to bimosaurus Cancel reply

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