Cara menggunakan php export to csv

image by techjoomla

Dalam Cara export file csv menggunakan PHP ini saya akan menggunakan fungsi dari php yaitu fputcsv[]. Cara ini gak ribet-ribet amat sebenernya, namun dalam pengembangan web application kita biasanya sering butuh fungsi ini untuk rekap laporan dan data lainnya yang butuh di unduh dari web application yang kita buat.

Kenapa saya buat tutorial ini, karena terinspirasi dari pengalaman ketika mengerjakan projek sistem perpajakan suatu Institut terkenal di Bandung. Data-data yang diolah di aplikasi harus di ekspor dan diimpor ke aplikasi E-SPT dari Direktorat Jendral Pajak. Banyak sebenernya tutorial seperti ini di google, tapi akan lebih mantap bukan kalo saya tulis sendiri tutorialnya versi saya? hehe

Definisi Fungsi fputcsv[]

The fputcsv[] function formats a line as CSV and writes it to an open file. This function returns the length of the written string, or FALSE on failure

Kalimat di atas saya kutip dari webnya w3schools, jadi kurang lebih fungsi ini dapat memformat baris menjadi CSV dan menulisnya kedalam file yang telah kita tentukan. Fungsi ini akan memiliki nilai balik [return] berupa panjang string yang ditulis kedalam CSV atau FALSE ketika terjadi kesalahan.

Cara Pakai fputcsv[]


int fputcsv [ resource $handle , array $fields [, string $delimiter = "," [, string $enclosure = '"' [, string $escape_char = "\\" ]]] ]

Ketika kita memanggil fungsi fputcsv maka kita harus memasukan beberapa parameter yang dibutuhkan, yaitu handle atau file yang akan kita gunakan untuk menulis CSV, kedua field atau teks yang akan kita tulis kedalam CSV. ketiga delimiter yaitu pemisah setiap kolomnya. keempat enclosure yaitu karakter yang akan digunakan untuk mengapit setiap kolom, ini opsional, secara default digunakan ["].

Contoh 1 : Menulis CSV ke media penyimpanan server


$list = array [
    array['Nama Depan', 'Nama Belakang', 'Jenis Kelamin', 'Status'],
    array['Ahmad', 'Zainal', 'Laki-laki', 'Single'],
    array['Bambang', 'Setiawan', 'Laki-laki', 'Jomblo']
];

$fp = fopen['file.csv', 'w'];

foreach [$list as $fields] {
    fputcsv[$fp, $fields];
}

fclose[$fp];

Kode diatas akan menghasilkan file.csv yang berisi data-data yang ada di variable $list kemudian menyimpan file.csv di direktori aktif server.

Contoh 2 : Menulis CSV ke media penyimpanan client



$filename = 'FILE.csv';
header[ 'Content-Type: text/csv' ];
header[ 'Content-Disposition: attachment;filename='.$filename];
$list = array [
array['Nama Depan', 'Nama Belakang', 'Jenis Kelamin', 'Status'],
array['Ahmad', 'Zainal', 'Laki-laki', 'Single'],
array['Bambang', 'Setiawan', 'Laki-laki', 'Jomblo']
];
$fp = fopen['php://output', 'w'];
foreach [$list as $fields] {
fputcsv[$fp, $fields];
}
fclose[$fp];

Kode diatas akan menulis file CSV dan kemudian menjadikannya downloadable file, jadi nanti si browser clientnya langsung download file yang ditulis. Karenanya kita kita pake hanlde nya php output kemudian menuliskan header kepada client bahwa ini adalah file bukan dokumen html untuk ditampilkan.

Mudah bukan? mudah dong.

Kode diatas hanya kode dasar saja, kalian bisa kembangkan lagi. happy kodingsanasini~

Anda dapat menggunakan built in fputcsv [] untuk array Anda untuk menghasilkan garis csv yang benar dari array Anda, jadi Anda harus mengulang dan mengumpulkan baris. Suka:

_$f = fopen["tmp.csv", "w"];
foreach [$array as $line] {
    fputcsv[$f, $line]
}
_

Untuk membuat browser menawarkan dialog "Simpan sebagai", Anda harus mengirim tajuk HTTP seperti ini [lihat lebih lanjut tentang tajuk ini di rfc ]:

_header['Content-Disposition: attachment; filename="filename.csv";'];
_

Menyatukan semuanya:

_function array_to_csv_download[$array, $filename = "export.csv", $delimiter=";"] {
    // open raw memory as file so no temp files needed, you might run out of memory though
    $f = fopen['php://memory', 'w']; 
    // loop over the input array
    foreach [$array as $line] { 
        // generate csv lines from the inner arrays
        fputcsv[$f, $line, $delimiter]; 
    }
    // reset the file pointer to the start of the file
    fseek[$f, 0];
    // tell the browser it's going to be a csv file
    header['Content-Type: application/csv'];
    // tell the browser we want to save it instead of displaying it
    header['Content-Disposition: attachment; filename="'.$filename.'";'];
    // make php send the generated csv lines to the browser
    fpassthru[$f];
}
_

Dan Anda dapat menggunakannya seperti ini:

_array_to_csv_download[array[
  array[1,2,3,4], // this array is going to be the first row
  array[1,2,3,4]], // this array is going to be the second row
  "numbers.csv"
];
_

Pembaruan:
Alih-alih _php://memory_ Anda juga dapat menggunakan php://output untuk deskriptor file dan menghapus pencarian dan semacamnya:

_function array_to_csv_download[$array, $filename = "export.csv", $delimiter=";"] {
    header['Content-Type: application/csv'];
    header['Content-Disposition: attachment; filename="'.$filename.'";'];

    // open the "output" stream
    // see //www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq
    $f = fopen['php://output', 'w'];

    foreach [$array as $line] {
        fputcsv[$f, $line, $delimiter];
    }
}   
_

Bài mới nhất

Chủ Đề