Friday, August 3, 2007

Export MySQL data ke Excel dengan PHP

Kadang-kadang data yang berada di database akan dicetak atau disimpan dalam format Excel atau spreedsheet. Beberapa aplikasi client database menyediakan fasilitas Export Data, baik ke dalam tabel html, DBF file, maupun Excel File.
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");
?>

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);
?>

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";
?>

Selamat mencoba!
Sebagian source diambil dari berbagai sumber


Technorati Profile

9 komentar:

Mr.zee said...

manteb banget bro artikelnya

thanks banget dah ;-)

bu70 said...

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

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

IT_Consultating said...

Mas, saya ada 2 pertanyaan tentang select box.
1. 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

dana said...

kalo mau export ke txt gmn??

Anonymous said...

mas didik, thanks buat artikelnya.
btw, 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

Anonymous said...

mas...cara munculin window buat ngesave nya gimana?

Anonymous said...

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

budi said...

manteb keren banget

igo said...

nice share...
berguna banget nih info...
:two thumbs: