Sabtu, 09 Februari 2013

Script PHP Import Data Dari File Excel Multiple Sheet Ke MySQL

Kali ini kita akan membahas tentang Import Excell ke dalam MySql dengan menggunakan PHP.  Tetapi tidak seperti import data yang biasanya... ^_^
Kenapa begitu...?! hehehe
Iya,,,, memang tidak seperti biasanya karena pada tutorial ini kita akan melakukan import data dari beberapa sheet yang ada pada excell kedalam tabel-tabel yang kita buat di MySql... ^_^
Penasaran...?!
Bila iya, maka saya sangat senang karena itu yang saya harapkan...hihihihi

Okeh,,, langsung saja ke tutorialnya, tapi terlebih dulu silahkan sobat download Class PHP Excel Reader disini

Misalkan kita memiliki sebuah file data excel yang memiliki 3 buah sheet yaitu sheet pertama berisi data mahasiswa, sheet ke dua berisi data dosen, dan sheet ke tiga berisi data matakuliah.

import excel mysql



Selanjutnya kita ingin import semua data yang dalam dalam ketiga sheet tersebut ke dalam tabel-tabel database MySQL yang berbeda. Data di sheet pertama (data mahasiswa) akan dimport ke dalam tabel mahasiswa, sheet ke dua (data dosen) akan diimport ke dalam tabel dosen, dan sheet ke tiga akan diimport ke tabel mata kuliah, hanya dengan sebuah script PHP.

Adapun, struktur tabel-tabel database untuk menyimpan data hasil import dari ketiga sheet tersebut adalah sbb:

CREATE TABLE `mhs` (
`NIM` varchar(10),
`NAMAMHS` varchar(20),
PRIMARY KEY (`NIM`)
);


CREATE TABLE `dosen` (
`KODEDOSEN` varchar(10),
`NAMADOSEN` varchar(20),
PRIMARY KEY (`KODEDOSEN`)
);


CREATE TABLE `mk` (
`KODEMK` varchar(10),
`NAMAMK` varchar(20),
PRIMARY KEY (`KODEMK`)
);


Berikut ini adalah script untuk import data dari beberapa sheet sekaligus.

import.php
<?php
mysql_connect('hostname', 'username', 'password');
mysql_select_db('dbname');
error_reporting(E_ALL ^ E_NOTICE);
require_once 'excel_reader2.php';
// proses assigning baca data file 'data.xls'
$data = new Spreadsheet_Excel_Reader("data.xls");
//-------- import dari sheet 1 ----------
// baca jumlah baris dalam sheet 1
$jmlbaris = $data->rowcount(0);
for ($i=2; $i<=$jmlbaris; $i++)
{
// baca data pada baris ke-i, kolom ke-1, pada sheet 1
$datakolom1 = $data->val($i, 1, 0);
// baca data pada baris ke-i, kolom ke-2, pada sheet 1
$datakolom2 = $data->val($i, 2, 0);
// insert data ke tabel mhs
$query = "INSERT INTO mhs (nim, namamhs) VALUES ('$datakolom1', '$datakolom2')";
mysql_query($query);
}
//-------- import dari sheet 2 ----------
// baca jumlah baris dalam sheet 2
$jmlbaris = $data->rowcount(1);
for ($i=2; $i<=$jmlbaris; $i++)
{
// baca data pada baris ke-i, kolom ke-1, pada sheet 2
$datakolom1 = $data->val($i, 1, 1);
// baca data pada baris ke-i, kolom ke-2, pada sheet 2
$datakolom2 = $data->val($i, 2, 1);
// insert data ke tabel dosen
$query = "INSERT INTO dosen (kodedosen, namadosen) VALUES ('$datakolom1', '$datakolom2')";
mysql_query($query);
}
//-------- import dari sheet 3 ----------
// baca jumlah baris dalam sheet 3
$jmlbaris = $data->rowcount(2);
for ($i=2; $i<=$jmlbaris; $i++)
{
// baca data pada baris ke-i, kolom ke-1, pada sheet 3
$datakolom1 = $data->val($i, 1, 2);
// baca data pada baris ke-i, kolom ke-2, pada sheet 3
$datakolom2 = $data->val($i, 2, 2);
// insert data ke tabel mk
$query = "INSERT INTO mk (kodemk, namamk) VALUES ('$datakolom1', '$datakolom2')";
mysql_query($query);
}
echo "<p>Proses import selesai</p>";
?>
Di dalam script import.php di atas, kunci terpenting dari proses pembacaan data pada setiap sheet yaitu pada perintah
$jmlbaris = $data->rowcount(x);
yaitu perintah untuk membaca jumlah baris data/record yang terletak pada sheet x+1. Untuk membaca jumlah record data pada sheet ke 10 misalnya, maka isikan nilai parameter x dengan 9, atau
$jmlbaris = $data->rowcount(9);
Jumlah baris data pada sheet ini perlu diketahui supaya untuk proses looping guna pembacaan setiap baris recordnya yang akan terus dilakukan sejumlah baris datanya.

Selanjutnya, perintah yang penting lainnya yaitu
$data->val(baris, kolom, index_sheet);
yang digunakan untuk membaca data yang terletak pada nomor baris dan kolom tertentu, dalam suatu sheet tertentu pula. Sebagai contoh misalkan akan dibaca data yang terletak dalam sheet ke 5, pada baris ke-10, kolom ke-6, maka perintahnya:
$data->val(10, 6, 4);
Dalam hal ini, parameter index_sheet bernilai 0 (untuk sheet pertama), 1 (untuk sheet ke dua), 2 (untuk sheet ke tiga) dst…

Setelah script import.php di atas dijalankan, maka bisa kita melihat data excel bisa terimport ke dalam tabel-tabel MySQL yang telah kita buat


Pastikan file Excel yang akan diimport dengan script ini, sudah disave as sebagai Excel 97-2003 (.XLS) terlebih dahulu, karena class PHP Excel Reader tidak bisa bekerja untuk file excel dalam format .XLSX (Excel 2007/2010)

Selamat mencoba, dan semoga bermanfaat buat sobat,,, ^_^


Sumber : blog.rosihanari.net

Tidak ada komentar:

Posting Komentar

 

Design By:
SkinCorner