Cara Konversi Excel ke MySQL di PHP

Ada sebuah pertanyaan di salah satu grup Facebook Indonesia yang membahas tentang pemrograman PHP. Dia --meminta-- kode PHP untuk melakukan konversi Excel ke MySQL. enak ya, tinggal minta. hahahaha...,

Disana banyak yg memberikan komentar masukan (bukan kode), dengan ini, dengan itu dan sebagainya.

Saya, akhirnya juga memberikan komentar (kode). Dengan maksud, agar si --penanya-- juga belajar.

Karena sudah terlanjur, saya mencoba membagikan cara untuk melakukan konversinya disini. Barang kali, kalian ada yg memiliki kendala yg sama, dan masih dalam proses belajar.

Konversi Excel ke CSV
Karena di php tidak ada native untuk membaca file excel. adanya file csv. Karena saya sendiri tidak ingin menggunakan lib\fw lain. Saya yakin, ms.excel ada fasilitas untuk melakukan konversinya ke csv.

Contoh Tabel MySQL
CREATE TABLE ulangan
 (
      `id` int,
      `ulangan_ke` int,
      `nama` varchar(10),
      `nilai` int,
      `peringkat` int
    )
;

Contoh data file CSV
Nama,Nilai,Peringkat
,,
Agus,73,7
Budi,87,4
Dina,65,11
Edi,95,2

Stream File CSV
$handle = fopen('folder/ke/file.csv','r');

Loop baris-perbaris dari file CSV
Sebelum melakukannya, kita perlu mengetahui pemisah (delimiter) data per baris (record). Untuk mengetahuinya, kita bisa membuka file csv dengan text-editor.
Normalnya, menggunakan "," (koma). Tapi Excel keluaran terbaru (setau saya) mengunakan ";" (titik koma). Dalam kasus ini, pemisahnya adalah koma.
$delimiter = ",";
while ($a = fgetcsv($handle,0,$delimiter)) {
    //prulangan
}

Kode diatas, akan melakukan perulangan baris-perbaris dari file.csv, dimana baris dimulai dari 0 (nol), saya rasa kalian sudah tahu akan hal itu.

To be continue...., (201605132133)

Penyaringan
Tentunya, yang akan disimpan ke database bukan baris judul, dan baris yang kosong. Yaitu, baris ke-0 yang berisi "Nama,Nilai,Peringkat" dan baris dengan data kosong. Dalam kasus ini baris ke-1, yang berisi ",,".
Maka dari itu, kita perlu mengetahui posisi angka-baris dalam perulangan. Maka dari itu, kita perlu menentukan sebuah variable yang akan menyimpan angka-perbaris. Sebelum while kita tambahkan variable:
$n = -1;
Kemudian, didalam while tulis:
$n++;
Singkatnya, saya memulai n dari -1, untuk melakukan penyaringan.
Setelah itu, proses-penyaringan:
if($n === 0) {
    continue; //lewati
}
if(empty($a[0]) && empty($a[1]) && empty($a[3])) { //sederhananya
    continue; //lewati
}

Query insert ke MySQL
Saya anggap kalian sudah membuat koneksi ke database mysql sebelumnya, jadi setelah penyaringan, tinggal melakukan perintah insert ke mysql (silahkan sesuaikan sendiri)
$sql->query("INSERT INTO ulangan(ulangan_ke,nama,nilai,peringkat) VALUES('100','{$a[0]}','{$a[1]}','{$a[2]}')");

Selamat mencoba.

Komentar

Postingan populer dari blog ini

kata nala dalam bahasa indonesia

Tutorial susah instalasi GeoServer di Windows

Sesorah Perpisahan Siswa Kelas IX SMPN 1 Piyungan

Pertimbangan Tokoh Anime Untuk Ke Indonesia [Part II]

Bagian-bagian Browser