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.