Import Data dari Excel ke MySQL Menggunakan Codeigniter

Setelah agak lama tidak berhubungan dengan Codeigniter, akhirnya saya bisa posting lagi. Daripada nanti lupa, saya ingin menyimpan pengetahuan tentang bagaimana memasukkan data dari file excel ke dalam database menggunakan framework codeigniter. Bagi pengunjung yang kebetulan sedang belajar tentang ini, silahkan dibaca. Semoga membantu.

Pertama, download project yang sudah jadi.

Download Project

Oke, yang perlu diperhatikan adalah kita harus menambahkan library Excel_reader untuk membantu proses pembacaan data Excel. Anda bisa menemukannya dalam folder system/application/libraries. Saya asumsikan Anda sudah memahami bagaimana alur kerja framework ini. Sebagai contoh, siapkan database mysql dengan nama ‘excel’. Import tabel dari file SQL yang ada di dalam file yang saya lampirkan. Terdapat tiga field, yaitu id, nama dan alamat.

Pertama jangan lupa memasukkan setting database di dalam file system/application/config/database.php. Berikut setingan database saya.

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "excel";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

Supaya tidak mengubah terlalu banyak, kita manfaatkan file welcome.php yang berfungsi sebagai default controller. Ketikkan code berikut:

class Welcome extends Controller {

	function Welcome()
	{
		parent::Controller();
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->helper('file');
	}

	function index()
	{
		$this->load->view('upload_form');
	}

    function do_upload()
	{
		$config['upload_path'] = './temp_upload/';
		$config['allowed_types'] = 'xls';

		$this->load->library('upload', $config);

		if ( ! $this->upload->do_upload())
		{
			$data = array('error' => $this->upload->display_errors());

		}
		else
		{
            $data = array('error' => false);
			$upload_data = $this->upload->data();

            $this->load->library('excel_reader');
			$this->excel_reader->setOutputEncoding('CP1251');

			$file =  $upload_data['full_path'];
			$this->excel_reader->read($file);
			error_reporting(E_ALL ^ E_NOTICE);

			// Sheet 1
			$data = $this->excel_reader->sheets[0] ;
                        $dataexcel = Array();
			for ($i = 1; $i <= $data['numRows']; $i++) {

                            if($data['cells'][$i][1] == '') break;
                            $dataexcel[$i-1]['nama'] = $data['cells'][$i][1];
                            $dataexcel[$i-1]['alamat'] = $data['cells'][$i][2];

			}

            delete_files($upload_data['file_path']);
            $this->load->model('User_model');
            $this->User_model->tambahuser($dataexcel);
            $data['user'] = $this->User_model->getuser();
		}
        $this->load->view('hasil', $data);
	}
}

Fungsi index adalah menampilkan form upload. Anda bisa lihat kode html untuk file upload_form.php. Kemudian fungsi do_upload digunakan untuk mengeksekusi ketika file excel disubmit. Setelah eksekusi berhasil, controller menampilkan halaman ‘hasil.php’ untuk mencetak data dari excel.

Terlihat bahwa controller memanggil model User_model. Kita buat file User_model.php di dalam folder model. Ketikkan code berikut:

class User_model extends Model {
    function User_model()
    {
	parent::Model();
        $this->load->database();
    }

    function tambahuser($dataarray)
    {
        for($i=0;$i<count($dataarray);$i++){
            $data = array(
                'nama'=>$dataarray[$i]['nama'],
                'alamat'=>$dataarray[$i]['alamat']
            );
            $this->db->insert('user', $data);
        }
    }

    function getuser()
    {
        $query = $this->db->get('user');
        return $query->result();
    }
}

Untuk uji coba, gunakan file tes.xls yang sudah saya sertakan. Jika tidak ada kesalahan, database Anda akan terisi record baru sesuai data dari file excel. Oh iya, yang perlu diperhatikan dalam file yang saya lampirkan menggunakan htaccess file untuk meng-overwrite url index.php. Jadi di dalam file config.php juga harus disesuaikan.

farid

Selamat datang dan salam kenal. Penulis merupakan lulusan Sekolah Tinggi Ilmu Statistik Jakarta jurusan Komputasi Statistik. Menekuni pemrograman web khususnya PHP dengan Yii Framework. Penggemar musik instrumen dan film Doraemon. Berasal dari Kota Lumpia Semarang dan pernah bertugas menjadi Staf Produksi dan IPDS di BPS Kabupaten Melawi. Sejak tahun 2016, mulai bertugas sebagai Staf Pengolahan Data di BPS Provinsi Kalimantan Barat

You may also like...

  • http://cinta2maret.us.to Cinta2Maret

    mangstab nih mas tutornya, saya lgi bikin proyek yang ada import data ke mysql pake CI.

  • Sutarman Cinta Manusia

    mas misalnya saya tambah 1 filed lagi. nama, alamat, TTL
    gimana caranya system hanya menambah jika Nama & Alamat tidak sama

    jadi jika di database ada data :
    – Nama : Mila
    – Alamat : Bandung
    jika saya upload excel dengan row detail tsb tidak akan update..
    tapi jila saya menambah detail
    -Nama : Mila
    – Alamat : Jakarta

    database akan menambah row baru

  • Oky Ade Irmawan

    kalau You did not select a file to upload. kenapa ya

  • http://omsasak.com/ omsasak

    Berhasil berhasil hore,,makasi buat tutorialnya om.. 😀
    nunggu tutorial-tutorialnya

  • Andri hermawan

    $root = “http://”.$_SERVER[‘HTTP_HOST’];
    $root .= str_replace(basename($_SERVER[‘SCRIPT_NAME’]),””,$_SERVER[‘SCRIPT_NAME’]);
    $config[‘base_url’] = $root;

    Ini maksudnya gimana ya mas? pada saat saya klik upload malah error. apa karena konfigurasi .htacces nya atau gmn? tolong pencerahannya. thx

  • Ramakanth

    Files Not Uploading…..if i click on upload button it is redirecting but showing error page not found…plz reply me in english….

  • Deddy Gunawan

    berhasil kalo localhost, tapi kalo sudah di hosting kok ada pesan error “unable load class: excel_reader”
    mohon bantuannya…

  • Jama’ Rochmad Muttaqin

    Mas,,jika data sudah ada di database.. cara ambil nilai nama lalu di cek apakah ada nama dobel apa g, jika ada dobel maka dilewati, jika tidak ada maka insert. Di posisi manakah saya harus nambahin skripnya ?

    • Adi Adi Rizky Rizky

      $this->db->insert(‘user’, $data);

      di rubah nya di sini.

  • Wahid

    Terimakasih Mas Farid Tutorialnya setalah lama mencari di google akhirnya ketemu di web ini. Terims.

  • deny

    mas format excel saya YYYY-MM-DD tp waktu saya import pembacaan di sqlnya kok 0000-00-00
    Mohon pencerahannya?terimakasih

  • Noor Syam Azwar Skom

    mas mua tanya klw kita milih fill mana yang harus masuk ke database bgy mana y mas caranya mksih

  • wira laoli

    gan contoh projectnya ngak bisa di download …

  • hari purnomo

    mas projectnya gk bisa di download

  • Cinta Dewi Amelia

    file project nya udah gak bisa didownload ya? :(