Membuat Script PHP Import Data MS. Excel Ke MySQL
May 30th, 2010 | by rosihanari |
Cetak Artikel
Sebenarnya topik tentang cara membuat script import data excel ke mysql sudah banyak ditanyakan rekans pengunjung setia blog ini. Namun… maaf baru sempat kali ini membuat artikelnya
Mengapa script import data Excel ke MySQL ini perlu dibuat? ya.. karena tool-tool seperti phpMyAdmin belum mendukungnya. Kalau tidak salah phpMyAdmin hanya mendukung import data dalam bentuk format SQL maupun CSV. Sebenarnya ada sih tool yang mendukung import data dalam format Excel, seperti Navicat dan SQLyog. Namun keduanya adalah tool berbayar
Nah… untuk membuat script import data Excel ke MySQL ini nanti kita akan memanfaatkan class PHPExcelReader yang dibuat oleh Vadim Tkachenko. Class ini sebenarnya hanya diperuntukkan untuk membaca file Excel saja, namun dengan sedikit modifikasi dan pengembangan dapat kita gunakan untuk melakukan import data Excel ke MySQL.
Oya… file Excel yang bisa dibaca oleh class PHPExcelReader ini untuk sementara hanya yang di bawah MS. Office 2007 atau Office 97-2003 saja. Dengan kata lain class ini tidak bisa digunakan untuk membaca file Excel yang berekstensi (*.xlsx). Oleh karena itu pastikan file Excel yang akan Anda import berekstensi *.xls.
Sebelum kita membuat script import datanya, silakan download terlebih dahulu class PHPExcelReader nya di bawah ini
Selanjutnya, kita akan membuat script import datanya. Dalam script yang akan kita buat ini, class tersebut nantinya akan kita includekan di dalamnya.
Untuk contoh kasus yang akan kita pilih di sini adalah import data mahasiswa. Berikut ini struktur tabel MySQL nya.
CREATE TABLE `mhs` ( `nim` varchar(10), `namamhs` varchar(30), `alamat` text, PRIMARY KEY (`nim`) )
Kemudian andaikan kita memiliki file data Excel seperti gambar di bawah ini

Dalam proses import data nanti, kita akan menggunakan bentuk form upload file. Oleh karena itu, pertama kita buat form uploadnya sbb:
import.php
<h1>Import Data Asrama</h1> <form method="post" enctype="multipart/form-data" action="proses.php"> Silakan Pilih File Excel: <input name="userfile" type="file"> <input name="upload" type="submit" value="Import"> </form>
Selanjutnya, kita buat script untuk proses upload dan import datanya. Oya… meskipun kita menggunakan form upload file, namun file Excel yang kita upload tersebut tidak akan tersimpan di server secara permanen namun hanya bersifat temporary yang otomatis akan terhapus setelah proses import datanya selesai.
proses.php
<?php
// menggunakan class phpExcelReader
include "excel_reader2.php";
// koneksi ke mysql
mysql_connect("dbHost", "dbUser", "dbPass");
mysql_select_db("dbname");
// membaca file excel yang diupload
$data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
// membaca jumlah baris dari data excel
$baris = $data->rowcount($sheet_index=0);
// nilai awal counter untuk jumlah data yang sukses dan yang gagal diimport
$sukses = 0;
$gagal = 0;
// import data excel mulai baris ke-2 (karena baris pertama adalah nama kolom)
for ($i=2; $i<=$baris; $i++)
{
// membaca data nim (kolom ke-1)
$nim = $data->val($i, 1);
// membaca data nama (kolom ke-2)
$nama = $data->val($i, 2);
// membaca data alamat (kolom ke-3)
$alamat = $data->val($i, 3);
// setelah data dibaca, sisipkan ke dalam tabel mhs
$query = "INSERT INTO mhs VALUES ('$nim', '$nama', '$alamat')";
$hasil = mysql_query($query);
// jika proses insert data sukses, maka counter $sukses bertambah
// jika gagal, maka counter $gagal yang bertambah
if ($hasil) $sukses++;
else $gagal++;
}
// tampilan status sukses dan gagal
echo "<h3>Proses import data selesai.</h3>";
echo "<p>Jumlah data yang sukses diimport : ".$sukses."<br>";
echo "Jumlah data yang gagal diimport : ".$gagal."</p>";
?>
Setelah script di atas dijalankan, maka berikut ini isi tabel mhs setelah proses import datanya

Nah.. mudah bukan?? Oya.. pastikan class phpExcelReader tersebut terletak dalam folder yang sama dengan kedua script di atas.
Dalam membuat file Excel, Anda tetap bisa menggunakan Office 2007 asal ketika menyimpan filenya, pastikan formatnya adalah Excel 97-2003 worksheet (pilih Save As Type: Excel 97-2003 Worksheet).
Semoga artikel ini bermanfaat…
| Baca Juga Artikel Terkait |
Kata kunci: import excel mysql - mysql excel - mysql script - phpmyadmin - script php import -






Siang pak , saya mendapat error di
Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\test1\proses.php on line 6
Warning: mysql_connect() [function.mysql-connect]: [2002] php_network_getaddresses: getaddrinfo failed: No such host is known. (trying to connect via tcp://dbHost:3306) in C:\xampp\htdocs\test1\proses.php on line 6
Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\test1\proses.php on line 6
Mohon bantuannya pak, ditunggu balasannya
@william: sepertinya ada masalah di port mysql nya. Pakai port default saja mas.
Pak saya mau tanya. Saya sudah coba, tapi kenapa selalu gagal diimport semua datanya. Padahal sudah saya sesuaikan field (databases) dengan tabel yang di excel 97-2003.bahkan nama tabelnya saya samakan.Tp knp tetep aja gagal ya pak?mohon pencerahannya.
@arih: coba cek di query INSERT nya mas. mungkin ada yang salah
Terima kasih, pak. Sangat membantu. Saya menemui kesulitan ketika meng-upload data excel pada tabel mysql yang memiliki auto increment. Kalau tabelnya tidak memiliki auto increment sih sudah sukses.
Mohon pencerahannya, karena saya coba modifikasi gagal terus
@lucky: biasanya itu karena di query INSERT nya mas yang salah. Coba cek lagi ya.
Pak saya mendapat pesan error
Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\excel_reader2\excel_reader2.php on line 523
Mohon bantuannya Pak
@ian: coba anda cari solusinya di blog ini mas, disearch saja: deprecated.
gan kalo ane muncul pesan ini abis import “C:\xampp\tmp\php3AF.tmp is not readable”
knapa ya..?
@hendi: pastikan file excelnya sudah di save as format worksheet 97-2003 (*.xls)
mau tanya om,,
aku udah nyoba n sukses,,
Tapi pas aku bikin columnnya 8
Jumlah maks importnya cuma sampe 10 baris aja,
kira2 penyebabnya apa ya?
Trus solusinya gmana biar dia mau import semua baris data yg ada?
Malam Pak. Bagaimana jika saya ingin jumlah kolomnya secara otomatis diketahui dari data yang di import ? Terima kasih
sore pak…
turorial bapak yang ini kan untuk satu tabel
kalau tabelnya lebih dari satu tapi nama kolomnya sama bagaimana ya pak?
hanya saja masih dalam satu file gitu pak…
mohon bantuannya
Malem Pak,
saya ingin meng-import file excel saya ke MySQL, di dalam file excel saya ada kolom tanggal yang formatnya dd/mm/yyyy, sedangkan pada MySQL jika tipe datanya “DATE” itu formatnya yyyy/mm/dd. saya coba import dengan script diatas data tanggalnya tidak masuk di MySQL.
bagaimana ya pak solusinya jika ingin data tanggal tersebut otomatis import ke dalam MySQL? soalnya tidak mungkin saya mengubah satu persatu data tersebut menjadi format yyyy/mm/dd karena datanya banyak sekali.
mohon bantuannya pak, terima kasih