TELAH DIBUKA !!!

Toko Ebook Tutorial "RosihanAri.Net"


Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP Dasar | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress



Slot iklan tersedia, pasang iklan di atas

Ebook yang direkomendasikan untuk Anda
Ebook Panduan Praktis OOP di PHP

Membuat Script PHP Import Data MS. Excel Ke MySQL


May 30th, 2010 | by rosihanari | Cetak Artikel 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

Download Class

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

Script PHP Import Excel ke MySQL

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

Script PHP Import Excel ke MySQL

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
Import Data Format XML ke MySQL dengan Script PHP
Script PHP untuk Membuat Report Format MS. Excel
Export Data Dari MySQL ke XML dengan PHP
Script INSERT Data Dengan PHP dan MS. Access
Script Cari Data File Yang Terupload Ke MySQL



Slot iklan tersedia, pasang iklan di atas


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


Ada 139 komentar dalam artikel ini.



  1. budi says:

    nanya pak;

    saya coba upload file xls sebagian masuk dan sebagian lagi tidak. saya melhat field yang tdk masuk dikarenakan menggunakan simbol ‘ , saya sdh coba merubah tipe dari varchar hingga text masih saja tidak bisa masuk pak. Mohon pencerahannya pak

    • rosihanari says:

      @budi: anda perlu menambahkan prosedur untuk mereplace single quote nya menjadi \’ mas, Anda bisa pakai str_replace(“‘”, “\’”, string)

  2. surya handoko says:

    pak saya mau tanya kok kapasitas import nya terbatas ya , soalnya saya mau import data lebih dari 1000 record tidak bisa masuk, mohon pencerahan pak soalnya buat tugas skripsi … terima kasih sebelumnya .

    • rosihanari says:

      @surya handoko: saya pernah mencobanya sampai 10rb baris data di excelnya bisa kok mas. Mungkin ada batasan di ukuran file yg diupload di php.ini nya.

  3. parman says:

    The filename C:\xampp\tmp\php77.tmp is not readable

    kenapa yah?
    mohon pencerahanya..

    • rosihanari says:

      @parman: pastikan filenya .xls (hrs di save dulu sbg excel 97-2003) bukan .xlsx

    • miftahul ulum says:

      makasih pak ari sudah mengingatkan tentang error temporary harus pake *.xls
      semoga ilmu bapak menjadi amal jariyah
      amiiiin

      mhs uin suka yk

  4. Taufiq says:

    mohon tanya pak, kok muncul tulisan seperti ini,
    Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\sisbiomawa\import\excel_reader2.php on line 916
    Proses import data selesai.

    Jumlah data yang sukses diimport : 0
    Jumlah data yang gagal diimport : 238

    mohon pencerahan, matur nuwun.

  5. Thank’s info.a gan …
    bermanfaat buangeeettt
    :-D

  6. Danie says:

    Mau tanya pak, saya sudah coba upload excel dan berhasil, tetapi ada sebagian data yang tidak masuk. setelah saya cek ternyata formatnya date, gimana ya pak biar datanya bisa masuk?
    mohon pencerahannya :)

  7. Bowie says:

    pak, adakah contoh script php untuk import csv. Lalu bagaimana jika header kolomnya itu tidak konsisten, misalkan headernya terkadang A B C, tapi bisa jadi A C B, sehingga mesti ditambahkan fungsi lagi untuk mengecheck headernya agar dimasukan kedalam kolom yang tepat. Terimakasih

  8. realizemo says:

    gan ane udh coba, tp kok error ya? ni ane kasih liat error nya ya…

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.

    kira2 salah dimana nya yaa?

  9. arif says:

    maaf mau tanya pak, saya coba kog hasilnya gini ya pak “Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:\xampp\htdocs\dbname\proses.php on line 6

    Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:\xampp\htdocs\dbname\proses.php on line 7

    Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in C:\xampp\htdocs\dbname\proses.php on line 7

    Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:\xampp\htdocs\dbname\proses.php on line 31

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\dbname\proses.php on line 31″

    moho pencerahanya pak, terima kasih

  10. manaf says:

    mas mmau nanya, ko waktu saya coba error ya.
    ada 3 errornya.
    1. Assigning the return value of new by reference is deprecated in C:\wamp\www\convert\excel_reader2.php

    2. unction split() is deprecated in C:\wamp\www\convert\excel_reader2.php

    3. Maximum execution time of 30 seconds exceeded in C:\wamp\www\convert\proses.php

    kira2 kenapa ya mas? mohon pencerahannya

    • rosihanari says:

      @manaf: itu bukan error mas tapi warning karena versi php anda tinggi, sedangkan script import excelnya untuk php versi rendah. Sehingga ada brbrp function yg tidak dikenal lagi di versi php yg anda gunakan (deprecated). Untuk masalah max execution time, coba ditambah execution timenya. Silakan disearch di blog ini dengan kata kunci: maximum execution time



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*