Free Ebook Tutorial from Rosihan Ari's Blog

Ebook Javascript | Ebook PHP | Ebook AJAX | Ebook CSS | Ebook FPDF | Ebook Wordpress | Ebook Java SE




Script PHP Import Data Dari File Excel Multiple Sheet Ke MySQL


August 14th, 2012 | by rosihanari |


Jual kaos

Artikel ini merupakan kelanjutan dari artikel sebelumnya tentang import excel dengan menggunakan script PHP yang pernah saya posting di blog tutorial pemrograman ini. Di dalam artikel tersebut, fokus utama adalah cara mengimport data dari file Excel yang terletak dalam sheet atau worksheet pertama ke dalam database mysql. Sedangkan pada artikel kali ini, akan saya paparkan cara mengimport langsung beberapa sheet dalam sebuah file excel ke dalam MySQL.

Untuk proses import data excel ini, kita masih tetap menggunakan class PHP Excel Reader (yang sudah saya modifikasi). Modifikasi ini terkait beberapa modul yang deprecated dalam PHP versi terbaru, karena class ini dibuat untuk PHP versi rendah sehingga untuk pemakaian di PHP versi terbaru kemungkinan ada beberapa pesan warning terkait modul yang deprecated tersebut.

Silakan terlebih dahulu mengunduh clas PHP Excel Reader yang sudah agak sedikit dimodifikasi tersebut di 4shared.

Selanjutnya, misalkan kita memiliki sebuah file data excel sebagai berikut, 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

import excel mysql

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 mudah-mudahan tulisan ini bermanfaat.


Kata kunci: excel mysql - import excel - script php excel -


 

Komentar Anda ...