Baca Tulis File CSV dengan PHP

CSV atau Comma-Separated Value merupakan suatu format penyajian data teks dimana setiap data (field) dipisahkan dengan suatu pemisah koma (,) dan setiap baris record dipisahkan dengan baris baru (line-break). Selain menggunakan pemisah (delimiter) koma terkadang jenis file CSV juga dapat dipisahkan dengan titik-koma (;) atau karakter <tab>. Jenis file CSV sendiri, dapat dibaca oleh semua software pengolah data (spreadsheet) seperti Microsoft Excel dan OpenOffice Calc. Spesifikasi dan penjelasan mengenai file CSV dapat ditemukan di Wikipedia.

PHP merupakan salah satu bahasa pemrograman yang mendukung penanganan file dengan cukup baik, termasuk file CSV. Bahkan mulai versi 4, PHP menambahkan fungsi khusus untuk penanganan file CSV, yaitu fgetcsv() untuk baca file CSV dan fputcsv() untuk membuat (menulis) file CSV. Dalam tutorial ini akan dibahas mengenai bagaimana baca tulis file CSV dengan menggunakan PHP.

Bentuk Umum Fungsi fgetcsv() dan fputcsv()

Sebelum  disajikan contoh programnya, ada baiknya kita pahami dulu mengenai bagaimana bentuk umum atau spesifikasi dari fungsi fgetcsv() dan fputcsv().

Bentuk umum file fgetcsv()

array fgetcsv (
   resource $handle
   [, int $length
   [, string $delimiter = ','
   [, string $enclosure = '"'
   [, string $escape = '\\' ]]]]
)

Berdasarkan bentuk umum di atas, fungsi fgetcsv() yang merupakan fungsi pembacaan file CSV yang memiliki output berupa array hasil pembacaan file CSV. Fungsi memiliki 5 parameter dimana parameter pertama harus disertakan, namun parameter yang lainnya bersifat opsional (pilihan). Berikut ini penjelasan masing-masing parameter tersebut:

  • $handle. Merupakan pointer pembacaan file, dapat berupa hasil dari fungsi fopen(), popen() maupun fsockopen().
  • $length. Merupakan jumlah atau panjang karakter pembacaan baris di file CSV. Parameter ini harus lebih besar dari jumlah karakter baris yang paling panjang di file CSV. Memang agak sulit menentukan pastinya, namun kita dapat memperkirakannya tanpa harus benar-benar tepat sesuai dengan baris terpanjang. Umumnya parameter ini cukup diisi dengan 1000 atau 1024 dengan asumsi jumlah karakter tiap baris tidak lebih dari 1000 atau 1024 tersebut.
  • $delimiter. Parameter ini menentukan jenis pemisah (delimiter) field dalam file CSV yang akan dibaca. Nilai default dari parameter ini adalah koma (,).
  • $enclosure. Parameter ini menentukan karakter pengapit (enclosure) untuk setiap field dalam file CSV. Default-nya adalah tanda kutip-dua (“).
  • $escape. Parameter pilihan ini menentukan karakter escape yang digunakan dalam file CSV.

Bentuk umum file fputcsv()

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

Dari bentuk umum di atas, terlihat bahwa fungsi fputcsv() memiliki 4 parameter dimana dua parameter pertama bersifat wajib. Fungsi ini memiliki return-value berupa bilangan integer yang merupakan panjang data (string) yang berhasil dituliskan ke file CSV. Fungsi akan bernilai FALSE (-1) jika gagal melakukan penulisan file. Mengenai penjelasan parameter fungsi, untuk $handle, $delimiter dan $enclosure sama seperti parameter pada fungsi fgetcsv(). Untuk parameter $fields dapat berisi array dari nilai data untuk setiap baris (record) yang akan ditambahkan ke file CSV.

Contoh Program Menulis ke File CSV

Pada contoh program ini, kita akan membuat file CSV dengan nama “mahasiswa.csv” yang akan diisi dengan data mahasiswa. Untuk menyederhanakan contoh, data mahasiswa yang akan dituliskan hanya berisi 3 (tiga) field yaitu “nim”, “nama” dan “nilai”. Masing-masing field akan dipisahkan dengan delimiter koma (,). Pengisian data dilakukan melalui sebuah form dimana saat tombol simpan ditekan, maka program akan menambahkan datanya ke file “mahasiswa.csv”.

Simpan file berikut ini sebagai “tulis_csv_mahasiswa.php“.

  1. <html>
  2. <head><title>Input Nilai Mahasiswa (Demo Menulis File CSV)</title></head>
  3. <body>
  4. <h1>Input Nilai Mahasiswa</h1>
  5. <form action="" method="post">
  6. NIM : <input type="text" name="nim" maxlength="10"/><br/>
  7. NAMA : <input type="text" name="nama" size="30"/><br/>
  8. NILAI : <input type="text" name="nilai" size="5"/><br/>
  9. <input type="submit" name="Simpan" value="Simpan"/>
  10. <input type="reset" name="Reset" value="Reset"/>
  11. </form>
  12.  
  13. <?php
  14. if (isset($_POST['Simpan'])) {
  15. //ambil data
  16. $nim = $_POST['nim'];
  17. $nama = $_POST['nama'];
  18. $nilai = $_POST['nilai'];
  19.  
  20. $arrdata = array($nim, $nama, $nilai);
  21.  
  22. $fp = fopen('mahasiswa.csv', 'a+');
  23.  
  24. $tulis = fputcsv($fp, $arrdata);
  25.  
  26. if ($tulis) {
  27. echo "<h2>Data berhasil disimpan</h2>";
  28. } else {
  29. echo "<h2>Data gagal disimpan</h2>";
  30. }
  31. echo "<p><a href='baca_csv_mahasiswa.php'>Lihat isi file CSV</a> | ";
  32. echo "<a href='mahasiswa.csv'>Download file CSV</a></p>";
  33. fclose($fp);
  34. }
  35. ?>
  36.  
  37. </body>
  38. </html>

Contoh Program Membaca File CSV

Contoh program ini akan mendemonstrasikan bagaimana pembacaan file CSV. Program akan membaca file “mahasiswa.csv” yang sudah diisi dengan program sebelumnya dan akan menampilkannya di sebuah tabel.

Simpan program berikut ini sebagai “baca_csv_mahasiswa.php

  1. <html>
  2. <head><title>Daftar Nilai Mahasiswa (Demo Baca File CSV)</title></head>
  3. <body>
  4. <h1>Daftar Nilai Mahasiswa</h1>
  5.  
  6. <table width="100%" border="1">
  7. <tr>
  8. <th>NO</th>
  9. <th>NIM</th>
  10. <th>NAMA</th>
  11. <th>NILAI</th>
  12. </tr>
  13.  
  14. <?php
  15. if (($handle = fopen("mahasiswa.csv", "r")) !== FALSE) {
  16. $row = 1;
  17. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  18. echo "<tr>";
  19. echo "<td>".$row++."</td>";
  20. echo "<td>".$data[0]."</td>";
  21. echo "<td>".$data[1]."</td>";
  22. echo "<td>".$data[2]."</td>";
  23. echo "</tr>";
  24. } //end while
  25. fclose($handle);
  26. } //end if
  27.  
  28. ?>
  29. </table>
  30. <p><a href="tulis_csv_mahasiswa.php">Input Nilai Mahasiswa</a></p>
  31. </body>
  32. </html>

Demo dan Download Contoh Program

Kesimpulan

Proses baca tulis file CSV di PHP ternyata cukup mudah karena memang sudah tersedia fungsi yang diperlukan. Tutorial ini hanya menjelaskan mengenai proses baca tulis file CSV secara sederhana, namun selanjutnya dapat dikembangkan menjadi aplikasi yang lebih kompleks, misalnya membaca file dari database kemudian menuliskannya ke dalam file CSV. Selamat mencoba dan maju terus ilmu pengetahuan Indonesia!

Comments
  1. 3 years ago
  2. 3 years ago
  3. 3 years ago
  4. 3 years ago
  5. 3 years ago
  6. 3 years ago
  7. 3 years ago
  8. 3 years ago

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>