Bismillaahirrohmaanirrohiim…
Berikut ini script php untuk membaca file CSV:
<?php $file_csv = isset($_FILES['file_csv']) ? $_FILES['file_csv'] : array(); $namafile = isset($file_csv['name']) ? $file_csv['name'] : '';//namafile.csv $separator = isset($_POST['separator']) ? $_POST['separator'] : ','; if (empty($namafile)) { exit('File upload tidak ditemukan'); } $nama_temp = $file_csv['tmp_name']; $rev = strrev($namafile); if (substr(strtolower($rev), 0,3)!=='vsc') { @unlink($nama_temp); exit('File upload bukan CSV ('.$namafile.')'); } // tentukan lokasi file yang akan disimpan $dirupload = dirname(__FILE__).'/upload/'; $tujuanupload = $dirupload.$namafile; // pindahkan file $terupload = move_uploaded_file($nama_temp, $tujuanupload); if (!$terupload) { @unlink($nama_temp); exit('Gagal upload file ('.$namafile.')'); } $arr_xls = array(); //cari akhir baris csv while(!feof($file)) { //baca isi csv perbaris dengan separator koma atau titik koma $data = fgetcsv($file,0, $separator); if (!is_array($data)) continue; $jumkolom = count($data); for($i=0;$i<$jumkolom;$i++) { echo $data[$i]; echo '<br />'; } echo '<hr />'; } //tutup akses file csv fclose($file);
Untuk tipe CSV seperti ini:
1,Sandal,7.500, 2,Sepatu,7.500, 3,Baju,7.500,
disimpan dari libreoffice tidak ada masalah, namun jika disimpan dari excel dengan format seperti di bawah ini:
1,Sandal,"7,500",,, 2,Sepatu,"7,500",,, 3,Baju,"7,500",,,
maka yang akan terbaca hanya satu baris pertama yang berisi seluruh isi CSV.
hal ini tentu menyulitkan saat ingin mengolah data CSV, solusinya adalah dengan menambahkan kode dipaling atas:
ini_set('auto_detect_line_endings', true);
Dalam server windows, linux, atau mac, tentu mempunyai format ganti baris yang berbeda-beda, jadi di PHP harus di set deteksi ganti barisnya menjadi OTOMATIS.
Demikian, semoga bermanfaat.