Fungsi PHP untuk Ekspor file ke CSV atau XLS (MS Excel)

Kadang kita ingin menyimpan sekumpulan data menjadi file CSV atau XLS (Ms Excel) atau mendownload data di database langsung dalam bentuk file CSV atau XLS dari web kita. Menggunakan skrip PHP hal tersebut sangat mudah dilakukan. File CSV atau Comma Separated Value sebenarnya merupakan file teks biasa yang dengan cara penulisan tertentu, yaitu memisahkan data dengan tanda koma dan baris, sehingga dapat dibaca di Ms Excel sebagai file CSV. Begitu pula dengan file berekstensi XLS. Ternyata kita juga bisa membuat file berekstensi XLS yang bisa dibuka di Ms Excel hanya dengan file teks biasa. Dengan demikian kedua jenis file ini dapat dengan mudah kita buat menggunakan skrip PHP.

Pertama kita harus pahami dulu apa itu file CSV dan file XLS yang berbasis file teks biasa ini.

1. File CSV atau Comma Separated Value seperti namanya berisi teks data yang tiap datanya dipisahkan dengan tanda koma. Sebagai gambaran, sebuah file CSV bisa berisi data berikut ini :

HeaderA, HeaderB, HeaderC

RowA1, RowB1, RowC1

RowA2, RowB2, RowC2

Jika kita membuat sebuah file di Excel dan menyimpannya dalam format CSV, maka jika file tersebut dibuka di Notepad maka akan terlihat isi file yang kurang lebih formatnya sama seperti di atas.

2. File XLS, jika Anda familiar dengan kode HTML, Anda tentu akan mengetahui tag-tag untuk membuat sebuah tabel. Nah jika sebuah file teks berisi tag-tag HTML yang membentuk sebuah tabel jika dibuka di browser, maka jika file tersebut berekstensi XLS maka file tersebut dapat dibuka di Excel dalam bentuk sel-sel tabel Excel. Berikut ini adalah contohnya :

<table>

<tr><td>HeaderA</td><td>HeaderB</td><td>HeaderC</td>

<tr><td>RowA1</td><td>RowB1</td><td>HeaderC1</td>

<tr><td>RowA1</td><td>RowB2</td><td>HeaderC2</td>

Setelah memahami file yang akan kita buat, sekarang kita memahami proses pembuatan filenya. Lihat source berikut ini :


<?php
$content = "HeaderA1,HeaderB,HeaderC\n";
$content .= "RowA1,RowB1,RowC1\n";
$content .= "RowA2,RowB2,RowC2\n";

$filename = 'myCSV.csv';
$fp = fopen( $filename, 'w' );
fwrite( $fp, $content );
fclose( $fp );
?>

Source di atas akan menghasilkan file bernama myCSV.csv yang dapat dibuka di Ms Excel. Tambahkan file path yang sesuai pada $filename untuk menentukan di direktori mana file akan disimpan. Perhatikan juga bahwa di tiap akhir baris Anda harus menambahkan tanda \n sebagai tanda ganti baris. Gunakan juga tanda kutip dua (“) dan bukan tanda kutip satu untuk menuliskannya.

Sekarang bagaimana kalau kita ingin file CSV tersebut dapat langsung didownload oleh user? Gunakan source berikut ini :


<?php

header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=myCSV.csv");

$content = "HeaderA1,HeaderB,HeaderC\n";
$content .= "RowA1,RowB1,RowC1\n";
$content .= "RowA2,RowB2,RowC2\n";

echo $content;

?>

Mudah, bukan? Untuk source kedua yang menggunakan header, pastikan bahwa tak ada spasi atau karakter kosong setelah tanda ?> di akhir code. Karena kita sudah menghasilkan output header di atas maka jika ada output header lagi di bawah yang dipicu adanya karakter kosong maka itu akan menghasilkan error “header already sent”.

Selamat mencoba!

One Comment to “Fungsi PHP untuk Ekspor file ke CSV atau XLS (MS Excel)”

  1. tq mas, informasinya saya coba ya ,.. salam kenal..

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: