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



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
, saya lebih prefer dipanggil mas…
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
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…
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….
# riri
sama-sama kang, alhamdulillah bermanfaat…
Salam kenal…
tengkyu atas bantuannya…
Sorry Mied, nitip nye-pam ketawa, nggaktahan, abis aku bener-bener ketawa baca ini…
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??
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
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.
Sama-sama mas
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.
