Membaca file csv dengan php
CSV adalah jenis file yang sering digunakan untuk menyimpan data berupa huruf dan angka dalam bentuk plain-text. CSV (comma separated values) ini menyimpan dengan susunan baris data yang dipisah dengan karakter koma dan disimpan dalam ekstensi .csv. File csv ini sering digunakan untuk menyimpan data dalam bentuk tabel yang terdiri dari kolom dan baris. CSV ini juga sangat fleksibel sehingga bisa dengan mudah dibaca ataupun ditulis dengan aplikasi/sistem lain. Bagaimana membaca file csv ini dengan php?
File csv ini bisa dibuat dengan cara manual dengan notepad/editor text atau dengan bantuan aplikasi tabular seperti excel. Isi file csv ini jika kita lihat dengan excel disajikan dalam bentuk kolom-kolom data seperti berikut :
dan jika kita buka dengan notepad akan terlihat seperti ini :
Jika dilihat pada gambar diatas maka terlihat bahwa data yang tersimpan terdiri dari baris-baris data dengan kolom yang dipisah dengan tanda titik koma, bisa juga tiap kolom dipisah dengan tanda koma tapi cara kerjanya sama.
Sekarang sudah kita ketahui format data yang tersimpan dalam csv, kita lanjutkan cara membacanya dengan php.
Contoh isi file csv yang akan dibaca adalah file-csv.csv dengan isi :
KODE;NAMA;JUMLAH 1;BAJU KAOS;10 2;KAOS KAKI;12 3;SENDAL JEPIT;10
Cara membaca file diatas :
<?php $namafile="file-csv.csv"; $pemisah=";"; $datacsv = fopen($namafile, "r"); while (($data = fgetcsv($datacsv, 1000, $pemisah)) !== FALSE) { echo $data[0]." - ".$data[1]." - ".$data[2]."</br>"; } fclose($datacsv); ?>
Jika kita lihat kode diatas cara membacanya cukup sederhana dengan fungsi php fopen dengan mode "r" read, menudian dipindah dalam array dengan diberi nama $data dengan fungsi fgetcsv. Hasil php diatas jika dijalankan akan menghasilkan seperti gambar berikut :
Jika masih bingung, silahkan coba download contoh kode php berikut : Download contoh baca csv
Upload dan baca file csv dengan php
Contoh diatas dengan kondisi file csv berada dalam satu folder phpnya. Bagaimana kalau file csv-nya diupload?
Dengan sedikit perubahan kita bisa lakukan hal yang sama pada kasus file csv yang diupload. Caranya :
Pertama buat form seperti berikut :
dengan kode perintah html :
<form action="" method="post" enctype="multipart/form-data" name="ContohUploadCSV" id="ContohUploadCSV"> <p>Pilih file csv <input type="file" name="filecsv" id="filecsv" /> </p> <p> <input type="submit" name="button" id="button" value="Kirim" /> </p> </form>
action pada form sengaja dikosongkan yang artinya form diatas akan diproses pada file yang sama. Kemudian kita tambahkan perintah untuk memproses file csv dengan kode berikut :
<?php if (!empty($_FILES["filecsv"]["tmp_name"])) { $namafile = $_FILES['filecsv']['tmp_name']; $pemisah=";"; $datacsv = fopen($namafile, "r"); while (($data = fgetcsv($datacsv, 1000, $pemisah)) !== FALSE) { $jml++; echo $data[0]." - ".$data[1]." - ".$data[2]."</br>"; } fclose($datacsv); echo "<SCRIPT>alert('".$jml." baris data berhasil dibaca');</SCRIPT>"; } ?>
Hanya sedikit bagian yang berubah, yang semula file csv dengan menyebutkan nama filenya, sekarang diubah menjadi bersumber dari fille yang diupload.
Silahkan download contoh lengkapnya berikut : Download contoh upload dan baca csv
Semoga bermanfaat
Zainal Hakim
** Bebas disunting dengan menyebutkan sumber **