Eksport data MySQL ke Ms. Excel dengan PHP

February 14th, 2007 89 Comments fahmij

Beberapa waktu yang lalu saya sempet jalan-jalan ke sini, maksud hati mau download appserv, dan rupanya ada artikel tentang eksport data MySQL ke Ms. Excel (XLS format) dengan PHP, dan rasanya ini akan sangat bermanfaat untuk (misalnya) mencetak laporan yang bisa diedit dengan mudah. Berikut kutipan kodenya :

//function for XLS
function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}

function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}

function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}

function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}

Kemudian kita tambahkan header agar output bisa didownload dalam bentuk XLS format, serta query ke database dan hasil query diletakkan pada cell-cell di spreadsheet. Kutipan kodenya :

// query database
$queabsdetail = "SELECT id, nama, nohp FROM tabel_user";

// eksekusi query
$exequeabsdetail = mysql_query($queabsdetail);

// read the result and insert into new array
while($res = mysql_fetch_array($exequeabsdetail)){
$data['id'][] = $res['id'];
$data['nama'][] = $res['nama'];
$data['nohp'][] = $res['nohp'];
} 

$jm = sizeof($data['id']);
// sending header
header("Pragma: public" );
header("Expires: 0" );
header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header("Content-Type: application/force-download" );
header("Content-Type: application/octet-stream" );
header("Content-Type: application/download" );;
header("Content-Disposition: attachment;filename=fileexcel.xls " );
header("Content-Transfer-Encoding: binary " );
xlsBOF();
xlsWriteLabel(0,0,"Sample : Export To Excel" );
xlsWriteLabel(2,0,"Jumlah Data" );
xlsWriteLabel(2,1,$jm); xlsWriteLabel(4,1,"No" );

//menulis pada cell (baris 4 kolom 1)
xlsWriteLabel(4,2,"Nama" );
xlsWriteLabel(4,3,"No. Hp" );
$xlsRow = 5;

//posisi awal
for ($y=0;$y<$jm;$y++){ //perulangan untuk baca data
++$i;
xlsWriteNumber($xlsRow,1,"$i" );
xlsWriteLabel($xlsRow,2,$data['nama'][$y]);
xlsWriteLabel($xlsRow,3,$data['nohp'][$y]);
$xlsRow++;
}
xlsEOF();
exit();

Semoga bermanfaat..

 

89 Responses to “Eksport data MySQL ke Ms. Excel dengan PHP”

  1. kenz April 8th, 2008 at 2:28 pm

    thanx mas…
    tutorial dan class fpdfnya sangat membantu…
    :d

  2. annie April 19th, 2008 at 3:25 pm

    source code buat forum diskusi

  3. annie April 19th, 2008 at 3:40 pm

    tolong saya cari source code buat forum diskusi dan aplikasi chat, mohon batuannya ke alamat an_rifah87@yahoo.co.id

  4. fahmi April 20th, 2008 at 4:06 am

    # annie
    Untuk source code forum diskusi saya biasa pake yang udah jadi (phpBB > http://www.phpbb.com), sedang untuk aplikasi chat saya pernah coba pake lace

  5. Aiek April 22nd, 2008 at 3:34 am

    Mas mau nanya tapi tdk berhubungan dengan postingan ini, bagaimana cara buat grafik dengan PHP?

  6. fahmi April 22nd, 2008 at 4:07 am

    # Aiek
    Untuk grafik, saya pernah pake library jpgraph (http://www.aditus.nu/jpgraph). Bisa dicoba..

    Semoga membantu.

  7. kenz April 25th, 2008 at 11:14 am

    mas mau nanya lg ya….:d

    saya pake database MSSQL 2000…trus saya kesulitan
    script php buat insert file pdf ke mssql… gmn ya??? bs bantu ga mas??
    terus mw nge download lg file pdf itu dr mssql via php…
    cm itu aja mas…

    thanx b4…:)

  8. wili May 1st, 2008 at 10:59 am

    :((

    Warning: Cannot add header information – headers already sent by (output started at c:\apache\htdocs\export_xls.php:1) in c:\apache\htdocs\export_xls.php on line 42

    aku nyoba kok gak bisa ngirim headernya ya……!
    solusinya gimana….?

  9. fahmi May 1st, 2008 at 11:50 am

    # wili
    Sepertinya ada output HTML, bisa berupa tag2 tertentu, karakter spasi, dan segala output HTML lainnya yang muncul sebelum pemanggilan header export2xls.
    Jadi, hilangkan output HTML di atas kode header() jika ada.
    Semoga membantu :)

  10. Export Data MySQ.. May 13th, 2008 at 2:58 pm

    [...] saya inginkan. Bet.. bet… bet adakadabra !!! Akhirnya Saya mendapatkan informasi ini dari blog ini dan si penulis menginformasikan jika script ini bisa didapat dari situs resmi [...]

  11. sampara May 17th, 2008 at 1:14 am

    Thanks for artikelnya, artikelnya oke punya deh.
    From
    http://www.sampara.com

    http://www.gratisan.sampara.com

  12. agus hidayatulloh May 27th, 2008 at 1:15 pm

    tolong beri tau cara koneksi ms excel ke mySQL trus ditampilkan pada PHP.
    tolong secepatnya ya.

  13. fahmi May 28th, 2008 at 12:24 am

    # agus hidayatulloh
    Pada kutipan kedua di atas sudah ditunjukkan caranya pak, di bagian //query database. Di bawahnya sudah langsung menjalankan fungsi mysql_query(), dengan asumsi sudah terkoneksi dengan databasenya (mysql_connect()).

  14. beginner July 28th, 2008 at 9:41 am

    Kalau mau export image dari php ke excel gimana caranya ya?

  15. standart July 28th, 2008 at 9:42 am

    oh iya tuh, saya juga lagi cari tutorialnya?
    mungkin ada yang bisa?

  16. wirka October 17th, 2008 at 2:39 am

    bagaiman yah caranya koneksi menggunakan php tetapi server databasenya menggunakan dua server dan databasenya beda. tolong dong solusinya coz saya make coneksi mysql_connect(“192.168.0.2″,”root”,”root”) kok engga mau koneksi yah databsenya. tolong yah dio balas ato di email ke email saya.

  17. adasd December 11th, 2008 at 8:05 am

    asdaadasd

  18. ssssssss December 11th, 2008 at 9:22 am

    sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss

  19. Budiman January 6th, 2009 at 5:49 am

    mas, cara untuk meng-convert excel dengan menggunakan checkbox select, jadi saya bisa memilih data2 yang ingin di convert ke excel?? karena ini hanya bisa meng-convert seluruh data di database mysql.mohon bantuannya

  20. yana January 24th, 2009 at 1:30 pm

    mas tolong bantu saya.gimana script untuk upload file xls kemudian menyimpannya kedalam database nilai_siswa yang terdiri dari field (nis,kode_guru,kode_mp,kode_smt,kelas,nilai).pliz mas bantuin saya penting banget.tinggal 2 hari lagi saya harus deadline sidang skripsi.bantu ya mas..terima kasih sebelumnya

  21. daday January 27th, 2009 at 4:39 am

    tanks atas informasinya ini pasti bermanfaat untuk kelulusan kuliah gw karna gw lagi bikin skripsi yang judulnya memerlukan code yang lw kasih, sekali lagi gw makasih banget tanks y bro…

  22. dede June 9th, 2009 at 6:37 am

    bingung ni, gimana contoh penerapan nya ada contohnya yang bisa diliat tidak?soal nya masi pemula n bingung soal pemakaian fungsi ini :(

  23. mican June 18th, 2009 at 4:00 am

    para master tolong bantuin dung. ak gi nyari yang sebaliknya nh. maksutnya, lewat web yang kita bikin ntar ada fasilitas upload

    nah data yang diupload tu data dalam bentuk excel trus gimana biar ntar bisa masuk dalam database gitu

    *) aku pake database MySQL

    tolong dibantu yah,..

    terimakasih..

  24. fahmi June 18th, 2009 at 4:17 am

    # mican
    Coba cek ini mas http://forums.tutorialized.com/php-91/export-ms-excel-to-mysql-using-php-10118.html . Tapi saya belum coba sendiri. Semoga berhasil :)

  25. mican June 18th, 2009 at 4:31 am

    @fahmi
    thanks a lot yakk buwat pencerahanya..
    i will try soon

    terimakasih,… :)

  26. desca July 9th, 2009 at 4:45 am

    mas, qo kodingan di atas sy coba error gini y mas :
    Parse error: parse error, expecting `’)” in bla bla bla.. on line 35

    error di perulangan untuk baca data..
    kenapa y mas??
    reply asap y mas..
    thnx,, =)

  27. fahmi July 10th, 2009 at 11:56 pm

    # desca
    line 35? sy udah coba sepertinya baik-baik aja .. mungkin ada yang terlewat mas/mba’.. :)

  28. Yogie July 13th, 2009 at 8:07 am

    Terima kasih scriptnya..
    udah tak coba dan langsung jalan.. :)

  29. Yogie July 13th, 2009 at 8:08 am

    @desca, ubah dulu < menjadi <

  30. desca July 13th, 2009 at 12:21 pm

    @mas Fahmi : tapi saya copas lgsg dr kodingan mas..saya bikin disesuain sama kasus yg mas pake..y uda, makasih bngt y, ntr dsc periksa lagide,, thnx alot,, ^^

    @Yogie : ubah apa menjadi apa mas? yg mas tunjukin kok sama 22 ny y?hehe.. thnx juga bantuanny,, =)

  31. Ian August 18th, 2009 at 9:12 am

    Tapi gimana kalau file xls yang dibuka bisa langsung rapi??
    mohon jawabannya segera.,

    Makasih Sebelum’na….

  32. fahmij August 19th, 2009 at 7:21 am

    # Ian
    Wah, maaf, saya belum explore lagi soal ‘mempercantik’ output xls-nya mas, karena tujuannya semula hanya eksport ke dalam bentuk xls yang notabene akan diedit lagi contentnya. Klo contentnya sudah fix, mungkin better langsung output PDF.

  33. Ian August 26th, 2009 at 7:57 am

    @fahmi
    Owh gitu,
    Ya udah Makasi Banyak ya

  34. koekang October 10th, 2009 at 8:03 am

    mas…. kalo mo merger kolom dan baris gimana ya… :), trus klau mo cetak tebal teks nya gimna ya mas…. makasih….

  35. putsq October 22nd, 2009 at 3:31 am

    Parse error: parse error, unexpected ‘;’, expecting ‘)’ in C:\Program Files\xampp\htdocs\siskulalihsan\admin\gurump\download_excel.php on line 86

    maksudnya apa ya??
    padahal copy paste langsung dr kodingnya, tp kok tetep error ya??
    tanda titik koma (;) dan kurungnya udh di cek, sm kok dgn koding aslinya
    tp tetep begitu
    mohon bantuannya ya…

    makasih

  36. yacob yulis November 20th, 2009 at 3:03 am

    Nice….

  37. Hendura January 21st, 2010 at 2:59 am

    Saya cobak untuk di local mau ni sintak, tpi klo untuk yang online gak mau. di bilang internal server error…

    Kira” apanya yg salah itu ??
    Apa anda udah dapet nyobak ni sintak pas online? n apakah mau ???????

    Tolong jawabannya….
    Terima kasih sebelumnya :)

  38. Jetbar May 31st, 2010 at 8:40 am

    Thank you bro, berguna banget bagi ku….

  39. fahmi May 31st, 2010 at 2:14 pm

    # Jetbar
    Yup, alhamdulillah… Sama-sama bro.. :)


Leave a Reply