Sekarang Kita akan melakukan export data MySQL ke file excel dengam menggunakan aplikasi yang dibuat dengan PHP. Berikut angkah-langkahnya,
Kita buat tabel contoh (id int(5), Nik varchar(8), nama varchar(25)) di dalam database test. lalu kita isi tabel tersebut dengan beberapa data dan kita export data tersebut ke dalam format file Excel.
Langkah pertama adalah melakukan konfigurasi koneksi ke server MySQL:
<?php
$host="localhost";
$user="whoami";
$pass="screet";
$db="test";
$conn=mysql_connect($host,$user,$pass) or die(mysql_error()."Koneksi Gagal");
?>
$host="localhost";
$user="whoami";
$pass="screet";
$db="test";
$conn=mysql_connect($host,$user,$pass) or die(mysql_error()."Koneksi Gagal");
?>
Setelah melakukan koneksi database dan koneksi berhasil, lalu kita buat tabel di atas, jangan lupa gunakan @ pada fungsi mysql_query, tanda @ digunakan untuk menghilangkan komentar error ketika ada kesalahan pembuatan tabel, hal ini dimaksudkan apabila tabel sudah ada, maka program tetap jalan tanpa ada pesan error.
Setelah Tabel selesai dibuat kita isi data tabel tersebut, berikut contoh script untuk membuat tabel dan mengisi datanya:
<?php
/* create database */
mysql_select_db($db);
$create="CREATE TABLE contoh (id INT( 5 ) NOT NULL AUTO_INCREMENT ,nik VARCHAR( 8 ) NOT NULL ,nama VARCHAR( 25 ) NOT NULL ,PRIMARY KEY ( id ) ,UNIQUE (nik)) TYPE = innodb";
$kueri_create=@mysql_query($create);
/* selesai create */
/* Insert data */
$insert="INSERT INTO `contoh` ( `id` , `nik` , `nama` )VALUES ('1', '00100001', 'Didik'), ('2', '00100002', 'Kurniawan')";
$kueri_insert=@mysql_query($insert);
?>
/* create database */
mysql_select_db($db);
$create="CREATE TABLE contoh (id INT( 5 ) NOT NULL AUTO_INCREMENT ,nik VARCHAR( 8 ) NOT NULL ,nama VARCHAR( 25 ) NOT NULL ,PRIMARY KEY ( id ) ,UNIQUE (nik)) TYPE = innodb";
$kueri_create=@mysql_query($create);
/* selesai create */
/* Insert data */
$insert="INSERT INTO `contoh` ( `id` , `nik` , `nama` )VALUES ('1', '00100001', 'Didik'), ('2', '00100002', 'Kurniawan')";
$kueri_insert=@mysql_query($insert);
?>
Setelah tabel siap dan data sudah ada, sekarang kita akan melakukan proses export data tersebut, berikut scriptnya:
<?php
$select = "select * from contoh order by nik";
//die($select);
$export = mysql_query($select);
$fields = mysql_num_fields($export);
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($export, $i) . "\t";
}
while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
if ($data == "") {
$data = "n(0) Records Found!\n";
}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=contoh.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
?>
$select = "select * from contoh order by nik";
//die($select);
$export = mysql_query($select);
$fields = mysql_num_fields($export);
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($export, $i) . "\t";
}
while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
if ($data == "") {
$data = "n(0) Records Found!\n";
}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=contoh.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
?>
Selamat mencoba!
Sebagian source diambil dari berbagai sumber
Technorati Profile
manteb banget bro artikelnya
ReplyDeletethanks banget dah ;-)
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php:2) in C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php on line 47
ReplyDeleteWarning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php:2) in C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php on line 48
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php:2) in C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php on line 49
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php:2) in C:\xampp\htdocs\bpsa\sampah\mysql_to_xls2.php on line 50
id nik nama "1" "00100001" "Didik" "2" "00100002" "Kurniawan"
Kalo boleh ane jawab berdasarkan pengalaman... :)
DeleteError seperti itu biasanya terjadi karena link yang kita buat ke file export.
Contoh:
Misalkan file yang berfungsi untuk export kita beri nama export.php, maka link ke file tersebut harus berupa nama asli filenya (ane ga tau istilah pemogramannya). Jadi bentuk link nya adalah http://localhost/siska/export.php bukan http://localhost/siska/index.php?page=export (misalkan ya)
seperti itu. semoga membantu... :)
Mas, saya ada 2 pertanyaan tentang select box.
ReplyDelete1. Bagaimana cara saya menampilkan index dari option yang saya pilih saat saya memilih option pada select box?
2. Bagaimana cara, select box yg ke-2 berubah pada index ke 3 saat saya memilih select box ke-1 dengan index ke-2? Balas di greysoftwareman@gmail.com dan di sini.
Thx
kalo mau export ke txt gmn??
ReplyDeletemas didik, thanks buat artikelnya.
ReplyDeletebtw, bisa di jelasin gak step2 skrip eksport datanya?
trus kalu mau atur Headernya (ID | NIK | Nama ), misalnya di set Bold, bisa tdk? kalu bs, gmn caranya yach? trims
mas...cara munculin window buat ngesave nya gimana?
ReplyDeleteHi.. Saya izu dari malaysia.. boleh ke saya memohon bantuan tapi tak tahu la jika kamu dapat membantu saya.. Saya pening memikirkan bagaimanakah dan code yang sesuai untu buat search by date , first date until end date .... I dont know.. but .. I HOPE you can help me !!
ReplyDeletemanteb keren banget
ReplyDeletenice share...
ReplyDeleteberguna banget nih info...
:two thumbs:
Top Markotob euy artikelnya.....
ReplyDeleteThanks berat.... sangat membanti
Makasih artikelnya.sudah aku coba dan berjalan.
ReplyDelete@bu70:
ReplyDeletepastikan sebelum script header(...) tidak ada script yang mencetak sesuatu ke browser, misal echo ".."
atau kode html di luar script
@IT_Consulting:
1. setau saya value yang diparsing oleh select box pada aplikasi web cuma value dari form elemen, tidak seperti di VB, Delphi, JAVA yang bisa diambil index valuenya.
2. untuk memanipulasi dan bekerja dengan select box sering kali saya gunakan java script/ajax mas
@dana:
export ke txt sebenarnya bisa dipakai cara yg sama dengan ini dengan headernya diganti dengan
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=contoh.txt");
untuk sparatornya bisa diganti koma atau titik koma.
@izu malaysia:
jika diperhatikan tipe date di database (mysql) jika ditambahkan dengan integer/longint maka akan menjadi tipe data long
misal date=2010-10-10 22:20:21
date+0 menjadi 20101010222021
dengan tipe numerik seperti ini bisa dibuat komparasi lebih besar dan lebih kecil. dengan operator < atau > atau =
terima kasih mas.
ReplyDeletemas klo misalnya kita mau tampilin datanya supaya rapih gimana yah mas, jadi bergaris tabel gitu...
mohon infonya
mas ucil,
ReplyDeletesepertinya tidak sesederhana yang dibayangkan... untuk membuat dokumen formating, kt harus tau format file xls/xlsx. biasanya dia berupa XML kl mau buat dokumen berformat kita harus masukan elemen2 XML sesuai dengan yg kita butuhkan.
Wow mantap... coba dulu ah
ReplyDeleteWarning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\convert.php:2) in c:\apache\htdocs\convert.php on line 47
ReplyDeleteWarning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\convert.php:2) in c:\apache\htdocs\convert.php on line 48
Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\convert.php:2) in c:\apache\htdocs\convert.php on line 49
Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\convert.php:2) in c:\apache\htdocs\convert.php on line 50
id nik nama "1" "00100001" "Didik" "2" "00100002" "Kurniawan"
pak didik yang masalah ini mohon di perjelas donk pak???hehe..belum ngerti...
pak bagaimana caranya memindahkan data gambar ke excel? terimakasih
ReplyDeletemakkasih mas scriptnya
ReplyDeletemas saya coba sesuai dengan code nya mas koq tapi jadi nya putih saja ya? bisa bantu?
ReplyDelete@addyt
ReplyDeletecoba ketik ini di baris 1:
dan ini dibaris paling bawah :
mas didik mohon pencerahannya, kalo untuk merubah format number menjadi text ,karena pada saat saya export berubah format contoh data 0001 tetapi yang tampil hanya ada angka 1 saja..terima kasih -dablegh-
ReplyDeletekalo saya mau pilih data sesuai yang di tampilkan dari hasil seleksi.
ReplyDeletecontoh: $select = "select * from contoh where kode_partner='$kode_partner' and periode='$periode'";
kenapa hasil recordnya '0' ya di excel?
Terima Kasih
saya berhasil membuat file export to excel di localhost, tetapi saat diupload ke hosting tidak dapat mendowload file excel seagaimana di localhost. misal .../pasar/rpt_toko_xls.php?id=02 tetapi page not found. kira-kira solusinya bagaimana ya? terima kasih
ReplyDeletesaya berhasil membuat file export to excel di localhost, tetapi saat diupload ke hosting tidak dapat mendowload file excel seagaimana di localhost. misal .../pasar/rpt_toko_xls.php?id=02 tetapi page not found. kira-kira solusinya bagaimana ya? terima kasih
ReplyDelete