Eksport data MySQL ke Ms. Excel dengan PHP


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

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts
Server2go
Indiscipline

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

wah..karna ini juga nih yang memudahkan tugas bikin laporan bulanan. tengkyu ya miet…. :)

Hehe..sama-sama mba’…

Good job!
semoga barokah

Ditunggu sumbangan ilmu yg lain di blog ini

mbak ,gimana sih cara menggunakan scrift ini ?maklum aku masih belajar php/pemula.Sudah aku simpan di notepad di buka dibrowser kok malah hurup nya doang…?Trim atas semua nya..

@ukie
Ada beberapa langkah yg mungkin bisa membantu :
1. Kita siapkan Apache (web server), PHP engine (script engine/parser), MySQL (database server). Untuk mudahnya, kita bisa pake Appserv , di mana kita tinggal download, install & kita akan mendapatkan semua yang kita butuhkan tadi (Apache, PHP, MySQL).
2. Setelah semua siap, kita lanjutkan dengan pembuatan satu file yang berisi script di atas, lalu file tersebut diletakkan di document root. Karena isi script di atas ada hubungannya dengan database (MySQL), maka kita harus pastikan koneksi PHP & MySQL telah berhasil dibuat, dan juga database+tabel sudah harus ada.
3. Untuk ngetest hasilnya, bisa buka lewat browser (http://localhost/scriptexcel.php).
4. Kalau masih belum berhasil, mungkin kita perlu berkunjung ke http://www.php.net untuk download manual PHP lebih dulu.
5. Untuk tambahan support, kita bisa gabung ke milis programmer PHP di “id-php”, ato forum-forum diskusi yang banyak tersebar di internet.
6. Semoga membantu.
7. Tolong jangan panggil mbak ya :) , saya lebih prefer dipanggil mas…

mkasi….

wa,, tengkyu banget lho..

baru mau aku coba sih..

ku harap bisa ngbantu aku.. :)

oya mau tanya mas, klo kita bikin excelnya langsung readonly bisa ga??

# puput
kembali kasi..

# ayu
hmm…sy belum tau e mba’ kalo soal itu, belum pernah nyoba n belum pernah nyari, karena tujuan saya mengexport data ke excel supaya bisa diedit lagi, jadi ndak readonly gitu :)
Mungkin kalo tujuannya supaya ndak bisa diedit (atau setidaknya susah diedit), gimana kalo pake export to pdf, misalnya pake class fpdf?

Hai Ada yang tahu bagaimana membaca format data di cell excel dengan php agar bisa saya masukan ke Mysql. mohon balas nya jika ada yang tahu ? please…..:((

# Gunawan Hidayat
barusan nyari mas, ketemu “phpexcelreader”, udah sy upload di sini. Sepertinya bisa dimodifikasi untuk dieksport ke MySql. semoga. :)

mas tadi malam tak praktekin di rumah pake php triad, tapi hasilnya kok error!
contoh script:
1.
nah errornya tuh pada line ke 4
Tolong di jawab segera!
:-?

eh sorry, komentarku kok gak kelihatan hee…hhh
inti errornya tu pada
echo pack(”ssssss”, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0);
pada tiap-tiap function,setelah baca documentationnya, aku jadi gak mudeng tentang dengan angka-angka di belakang “sssss”.Tolong di jelaskan biar jelas apa maksudnya!

# aguspuryanto
hehehe…maaf, saya lupa mengatakan bahwa penekanan posting ini ada di penggunaan function for XLS (bagian atas) dalam mengexport data ke file XLS (bagian bawah). Jadi untuk maksud dari angka-angka di belakang “sssss” saya sendiri ndak paham. (Function tersebut saya kutip dari http://www.appservnetwork.com)
Mengenai error yang mas maksud, kalau boleh tau, apa bunyi errornya? mungkin saya bisa bantu :)

waduh kalo errornya aku lupa, tapi yang jelas error menunjukkan pada :
echo pack(”ssssss”, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0);
setelah aku ganti dengan
echo pack (”ssssss”, 0×123, 0×456, 65, 64);
memang berhasil menghasilkan file excell, tapi isinya:
berupa angka-angka yang tidak aku mengerti, dan isi data di mysql tidak muncul.Sorry deh, aku setengah-setengah ingat.besok aku kasih laporan detailnya. lagian aku baru cobain di pc lokal dengan phptriad. gak tau lagi kalo dah di upload ke server. anyway Thank’s a lot for your respon!.

# aguspuryanto
Hmm…seinget saya, kita ndak perlu ngubah-ubah yang function for XLSnya, jadi tinggal dipanggil aja kaya’ di bagian bawah (contoh)..

Sebentar, mungkin kalo kita copy paste langsung dari tulisan di atas jadi ndak bisa, karena karakternya /font-nya courier (kena efek css pula). Mungkin coba di ketik ulang aja kodenya mas.

Semoga membantu.

tengkyu2… \:d/

hei tolongin dunk…gimana koneksi

hei tolongin dunk…gimana koneksi php dengan excell:">error nieh

# suardin
Bisa dijelaskan error-nya gimana? :)

kang , makasih yah. sangat membantu bangget blognya….:d

# riri
sama-sama kang, alhamdulillah bermanfaat… :)

Salam kenal…

tengkyu atas bantuannya…:)>-

7. Tolong jangan panggil mbak ya :) , saya lebih prefer dipanggil mas…

:))

Sorry Mied, nitip nye-pam ketawa, nggaktahan, abis aku bener-bener ketawa baca ini…

=))

:( need help kalo FDPF boleh nanya disini ga…?
stuck nih…:((

# deni_sugi
:) ada apa dengan FPDF ??

Warning: Cannot add header information - headers already sent by (output started at C:\apache\htdocs\tes\scriptexcell.php:9) in C:\apache\htdocs\tes\scriptexcell.php on line 43

kalo aku salah satu errornya seperti di atas
minta tlg ya.. gimana benernya.. thx b4:)

# bang joe
kemungkinan ada ‘output’, semacam echo / print / ato tag html sebelum kode-kode itu, padahal file nantinya ngeluarin output dalam bentuk “streaming”; jadi ndak boleh ada output sebelum kode-kode di ats..

untuk contoh filenya bisa dilihat di sini.

:)

kalo kebalikannya bisa ndak dari exel ke mysql?tlg ya..:):)

# sulhan
untuk dari excel ke mysql sy pernah nyoba pake phpExcelReader, bisa mbaca content excel trus exportnya dalam bentuk CSV (Comma Separated Value). Contoh bisa didownload di sini

Okey, udah bisa kok mas mee.. thx ya…:)
tapi kalo misal di kasih warna background/font nya script yang mana yang harus di edit??.. thx b4 ;)

Maksutna font/background di excell nya..

# joe
wah, klo itu sy belum nyobain pak.. maap :)>-

kalo export excel dari php pake sql server ma oracle gimana??:-?

:x thanks lot…. wa dunlud yach :P:d/:d/

mas…. saya boleh minta tolong ndak??
saya punya problem dengan masalah exporting file database mysql ke xls melalui php, kalau boleh, minta contoh script untuk exportingnya ya mas… yang lengkap, biar gampang tracingnya…

salam
kalo boleh ke putuananta2005@yahoo.com
:)

# sanji kun
wah, maaf mas, untuk itu saya belum pernah coba, tapi saya rasa caranya ngga jauh beda, mungkin bedanya hanya di koneksi php ke SQL Server ato oraclenya aja, dan untuk exporting ke excelnya saya rasa tetap dengan fungsi yang sama… CMIIW

# D’Fariztha
sama-sama :)

# Putu Ananta Wijaya
Untuk contoh scriptnya bisa dilihat di link ini mas : http://www.fahmijafar.net/filex/view.php?file=source/exporttoexcel.php

salam :)

ada yang tau cara buat angka dalam tabelberubah otomatis kalo aku isi input text gak ? kayak di http://www.bhinneka.com yang bagian shoppingcartnya itu ? pake javascript sih tapi kok susah yah gak bisa2

Hallo Kawan2x PhpHolic Aku punya Kesulitan meng-export dari mysql ke excel soalnya coloum headernya nggak kebawa…. Gimana yach
tolong kalau ada yang punya scriptnya kirimin ke hidayatvindy@gmail.com

kalau alamat yang ada contoh-2x source php gratis dimana???
Thanks
Salam Php Holic:-\:-\:-\:-\

# hidayatvindy
Untuk contoh scriptnya ada di : http://www.fahmijafar.net/filex/view.php?file=source/exporttoexcel.php

mas fahmi,

sebelumnya makasih banyak dah kasih source code nya. Cuman aku nda ngerti bagaimana konsepnya ? Lalu bagaimana caranya aq bisa nulis Label nya ? Label kolom. Bisa kasih penjelasannya mas ?

Buat pengembangan lebih lanjutnya mungkin akan lebih sip. Karena akan sangat membantu sekali.

Agustian

:)
oh ya ikut nimbrung yaa

kalo aq pake yg
SpreadsheetWriteExcel - Write to a cross-platform Excel binary file_ - search_cpan_org.htm

itu bisa nyambung g’ y, cz ketika aku include file nya pasti kesalahany

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\hrd-training\frm_input_usulan.php:1) in C:\xampp\htdocs\hrd-training\excel\test-excel.php on line 91

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\hrd-training\frm_input_usulan.php:1) in C:\xampp\htdocs\hrd-training\excel\test-excel.php on line 92

# Agustian
Sama-sama mas :) Setau saya, fungsi di atas itu melakukan proses “streaming” outputnya ke dalam suatu file dengan jenis excel, dimana dilakukan proses pembacaan dari database, lalu diletakkan pada cell-cell tertentu.
Untuk meletakkan label, dengan fungsi xlsWriteLabel(), contohnya : xlsWriteLabel(4,2,”Nama”); // menulis label ‘Nama’ pada baris ke 4 kolom ke 2.

# fila
Klo errornya “Cannot modify header information - headers already sent by”, mungkin ada output lain sebelum fungsi dipanggil, misalnya spasi, atau tulisan lainnya, padahal fungsi excel itu mengeluarkan output secara streaming via fungsi header(); jadi pemanggilan header itu letaknya paling awal di outputnya..

semoga membantu .. :)

kenapa saat buat report ke excell koq muncul warning “unable to read”

Thanks

all,
gimana caranya untuk menyimpan hasil query ke dalam excel dari php tanpa harus mendownload.

thx bantuannya

bagaimana caranya buat merubah data dari mysql ke excel tolong dibantu yah buat membuat modul laporan rido ga bisa??

# eka
Maaf, untuk itu saya belum pernah coba. Tapi mungkin konsepnya mirip manajemen file(dengan fungsi fopen(), fread(), fputs()).
CMIIW

# rida
Untuk kode program yang saya cantumkan di atas, itu bisa digunakan untuk mendapatkan output berupa file excel yang recordnya dari data di MySQL.

Semoga membantu.
:)

Tank’s alot

mas aq mau nanya script php eksport data mysql ke format pdf ??

tolong ya…buat tugas kul???
thanx b4..

# kenz
Untuk export ke pdf (print to pdf), bisa menggunakan class fpdf (http://www.fpdf.org/). Di site-nya udah ada tutorial yang cukup membantu.

semoga bermanfaat.
:)

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

source code buat forum diskusi

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

# 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

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

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

Semoga membantu.

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…:)

:((

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

# 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 :)

[...] 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 [...]

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

http://www.gratisan.sampara.com

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

# 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()).

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

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

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.

asdaadasd

sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss

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

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

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…

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

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

# 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 :)

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

terimakasih,… :)

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,, =)

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

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

@desca, ubah dulu < menjadi <

@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,, =)

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

Makasih Sebelum’na….

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

@fahmi
Owh gitu,
Ya udah Makasi Banyak ya

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

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

Nice….

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 :)

Every one understands that modern life is high priced, but we require money for different things and not every one earns big sums money. So to get quick loans and term loan will be a right way out.