Selamat datang lagi pada blog saya kali ini. Pada artikel kali ini saya akan menjelaskan bagaimana cara Import dari Excel ke Database Menggunakan CodeIgniter ? sebelumnya saya mempunyai struktur data pada database sebagai berikut :
terdapat 9 data yang akan di proses kedalam database. dikarenakan id_siswa adalah Key jadi pada database tidak kita proses.
Sebelumnya buat sebuah file Excel
untuk mempermudah sesuaikan urutan pada database dengan excel. karena id_siswa adalah bersifat AUTO INCREMENT jadi pada excel tidak kita tampilkan.
pada kali ini saya menggunakan lib excel_reader dapat di download disini : DOWNLOAD
simpan Lib tersebut pada folder application\libraries
Buat sebuah function pada controller terserah mau anda kasih nama apa, di sini saya memberikan nama excel. Function ini berfungsi untuk load views uploadnya saja
siswa/do_upload <<== berikan berdasarkan Controller uploadnya.
untuk proses uploadnya buat sebuah function pada controller terserah anda mau kasih nama apa, disni saya memberikan nama do_upload function ini yang akan di tuju saat proses upload di atas , nama function harus sama :D
pada function do_upload tadi akan saya jelas step demi step sintax yang akan kita gunakan.
pertam kita harus membuat temp untuk uploadnya, terserah mau anda kasih nama folder apa untuk temp ini , di sini saya akan memberikan nama temp_upload. untuk hal tersebut buat sebuah sintax nya seperti berikut, untuk memperkenalkan tempat temp upload tadi.
buat sebuah function didalam module tersebut
jika sudah buat modul kita akan kembali ke controller tadi
pada baris setelah coding diatas kita akan melakukan proses inputan menggunakan modul di atas. karena dari tadi kita tidak ada melakukan load modul makan kita harus load terlebih dahulu modulnya.
terdapat 9 data yang akan di proses kedalam database. dikarenakan id_siswa adalah Key jadi pada database tidak kita proses.
Sebelumnya buat sebuah file Excel
untuk mempermudah sesuaikan urutan pada database dengan excel. karena id_siswa adalah bersifat AUTO INCREMENT jadi pada excel tidak kita tampilkan.
pada kali ini saya menggunakan lib excel_reader dapat di download disini : DOWNLOAD
simpan Lib tersebut pada folder application\libraries
Buat sebuah function pada controller terserah mau anda kasih nama apa, di sini saya memberikan nama excel. Function ini berfungsi untuk load views uploadnya saja
$this->load->view('siswa/excel');
pada tampilan view excel buat sebuah file untuk uploadnya
<?php echo form_open_multipart('siswa/do_upload');?>
<input type="file" id="file_upload" name="userfile" size="20" />
<br />
<input type="submit" value="Upload" />
<?php echo form_close();?>
untuk proses uploadnya buat sebuah function pada controller terserah anda mau kasih nama apa, disni saya memberikan nama do_upload function ini yang akan di tuju saat proses upload di atas , nama function harus sama :D
pada function do_upload tadi akan saya jelas step demi step sintax yang akan kita gunakan.
pertam kita harus membuat temp untuk uploadnya, terserah mau anda kasih nama folder apa untuk temp ini , di sini saya akan memberikan nama temp_upload. untuk hal tersebut buat sebuah sintax nya seperti berikut, untuk memperkenalkan tempat temp upload tadi.
$config['upload_path'] = './temp_upload/';
jika sudah kita harus memperkenalkan extensi file yang di izinkan untuk di proses, untuk itu kita membuatkan sintax berikut untuk memperkenalkan/meizinkan extensi file
$config['allowed_types'] = 'xls';
untuk configurasi ini sudah selesai, saatnya kita akan melakukan load library upload dan kita sinkronkan dengan config di atas sehingga menjadi seperti ini.
$this->load->library('upload', $config);
kita harus filter atau memberikan sebuah logic jika suatu saat terjadi error saat upload file.
jika kebenarannya kita akan menampilkan display_errornya
oleh karena itu jika exekusi $this->upload->do_upload() tidak benar makan tampilkan pesan kesalahannya, untuk codingnya dapat dilihat di bawah ini :
if ( ! $this->upload->do_upload())untuk nilai tidak benar alias jika salah maka kita membuatkan logic barunya :
{
$data = array('error' => $this->upload->display_errors());
}
elsepada logic ini exekusi programnya akan di lakukan, terlebih dahulu kita harus load library excel_reader tadi
{
$data = array('error' => false);
$upload_data = $this->upload->data();
$this->load->library('excel_reader');untuk mengenal apa itu excel_reader dapat dilihat disini :
https://code.google.com/p/php-excel-reader/wiki/Documentationuntuk coding selanjutnya adalah upload_data kita menggunakan full_path
$file = $upload_data['full_path'];jika sudah kita akan membaca file excel yang sudah kita upload tadi
$this->excel_reader->read($file);kalau file excel sudah terbaca oleh excel_reader maka kita akan set nilai2 yang ada pada excel tadi dimulai dari sheets yang berapa atau kita ambil sheets berapa.
$data = $this->excel_reader->sheets[0] ;
jika sampai disini sudah oke kita akan memasukan nilai data yang ada didalam excel tadi kedalam array
$dataexcel = Array();
karena tadi data ada 10 jadikita harus membuat sebuah looping
for ($i = 1; $i <= $data['numRows']; $i++) {jika semua looping sudah tersimpan didalam arrya maka data excel yang sudah diupload tadi akan kita hapus menggunakan perintah berikut
if($data['cells'][$i][1] == '') break;
$dataexcel[$i-1]['nis'] = $data['cells'][$i][1];
$dataexcel[$i-1]['nama'] = $data['cells'][$i][2];
$dataexcel[$i-1]['alamat'] = $data['cells'][$i][3];
$dataexcel[$i-1]['kelas'] = $data['cells'][$i][4];
$dataexcel[$i-1]['wali'] = $data['cells'][$i][5];
$dataexcel[$i-1]['alamat_wali'] = $data['cells'][$i][6];
$dataexcel[$i-1]['telp_wali'] = $data['cells'][$i][7];
$dataexcel[$i-1]['pekerjaan'] = $data['cells'][$i][8];
}
delete_files($upload_data['file_path']);sampai disini proses pengambilan data dari excel sudah selesai, sisa kita memasukannya kedalam database, disini saya membuat sebuah module nya dengan nama Excel_model
buat sebuah function didalam module tersebut
function tambahsiswa($dataarray)function ini yang akan melakukan proses penyimpanan kedalam database, yang mana data akan kita lakukan normalisasi data sehingga dapat sinkron dengan database supaya tidak terjadi kesalahan saat insert data ke dalam database.
{
for($i=0;$i<count($dataarray);$i++){
$data = array(
'nis'=>$dataarray[$i]['nis'],
'nama'=>$dataarray[$i]['nama'],
'alamat'=>$dataarray[$i]['alamat'],
'kelas'=>$dataarray[$i]['kelas'],
'wali'=>$dataarray[$i]['wali'],
'alamat_wali'=>$dataarray[$i]['alamat_wali'],
'telp_wali'=>$dataarray[$i]['telp_wali'],
'pekerjaan'=>$dataarray[$i]['pekerjaan']
);
$this->db->insert('siswa', $data);
}
}
jika sudah buat modul kita akan kembali ke controller tadi
pada baris setelah coding diatas kita akan melakukan proses inputan menggunakan modul di atas. karena dari tadi kita tidak ada melakukan load modul makan kita harus load terlebih dahulu modulnya.
$this->load->model('Excel_model');Jika sudah kita akan menutup exekusi logic kesalahan tersebut lalu melakukan rendirect halaman
$this->Excel_model->tambahsiswa($dataexcel);
header('location:'.base_url().'siswa');
Untuk coding lengkap untuk controller adalah :
public function excel()Dan untuk modul nya adalah :
{
if($this->session->userdata('logged_in')!="" && $this->session->userdata('stts')=="administrator")
{
$this->load->view('templat/header');
$this->load->view('siswa/excel');
$this->load->view('templat/footer');
}
else
{
header('location:'.base_url().'');
}
}
public function do_upload()
{
if($this->session->userdata('logged_in')!="" && $this->session->userdata('stts')=="administrator")
{
$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('230787');
$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]['nis'] = $data['cells'][$i][1];
$dataexcel[$i-1]['nama'] = $data['cells'][$i][2];
$dataexcel[$i-1]['alamat'] = $data['cells'][$i][3];
$dataexcel[$i-1]['kelas'] = $data['cells'][$i][4];
$dataexcel[$i-1]['wali'] = $data['cells'][$i][5];
$dataexcel[$i-1]['alamat_wali'] = $data['cells'][$i][6];
$dataexcel[$i-1]['telp_wali'] = $data['cells'][$i][7];
$dataexcel[$i-1]['pekerjaan'] = $data['cells'][$i][8];
}
delete_files($upload_data['file_path']);
$this->load->model('Excel_model');
$this->Excel_model->tambahsiswa($dataexcel);
}
header('location:'.base_url().'siswa');
}
else
{
header('location:'.base_url().'');
}
}
<?phpTampilan Viewnya adalah ;
class Excel_model extends CI_Model {
function tambahsiswa($dataarray)
{
for($i=0;$i<count($dataarray);$i++){
$data = array(
'nis'=>$dataarray[$i]['nis'],
'nama'=>$dataarray[$i]['nama'],
'alamat'=>$dataarray[$i]['alamat'],
'kelas'=>$dataarray[$i]['kelas'],
'wali'=>$dataarray[$i]['wali'],
'alamat_wali'=>$dataarray[$i]['alamat_wali'],
'telp_wali'=>$dataarray[$i]['telp_wali'],
'pekerjaan'=>$dataarray[$i]['pekerjaan']
);
$this->db->insert('siswa', $data);
}
}
}
?>
<body>Berikut Print Screen
<div class="well"><?php echo form_open_multipart('siswa/do_upload');?>
<input type="file" id="file_upload" name="userfile" size="20" />
<br />
<input type="submit" value="Upload" />
<?php echo form_close();?>
Semoga artikel ini dapat membantu anda dalam dalam proses import dari excel ke database menggunakan Codeigniter
UPDATE :
30-Juni-2014
Solusi Fatal error: Call to undefined function delete_files()
mas ini hanya bisa import dari file excel yg fomatnya xls ya? tidak bisa yg format xlsx ? itu gimana ya kira2 kalo yg xlsx?
BalasHapusterimakasih
struktur pada xlsx agak berbeda mas, ya ini hanya bisa untuk xls saja
Hapusmas, bagaimana membuat mysql tidak membaca formula cell tapi hasil perkalian antar cell.
BalasHapussaya sdh upload dan data cell yang tidak mengandung formula sukses tapi yang mengandung formula tidak bisa.
mas, mau tanya, udah aku ketik semua script nya, kog page not found ya ?
BalasHapusindex.php nya sudah di hilangkan ? mas
Hapusaku coba langsung eksekusi fungsi excel kog error ya mas
BalasHapus"Fatal error: Call to a member function userdata() on a non-object in C:\xampp\htdocs\excel\application\controllers\siswa.php on line 4"
Mas harry hank, saya udah coba lancar ga ada erornya , nah masalah itu data excellnya gamau masuk ke database, itu gimana ya? Hehehe terimakasih sebelumnyaa
BalasHapusSudah diatur belum databasenya...
Hapushttp://media-kreatif.com/home/post/27/konfigurasi-dasar-pada-codeigniter-framework.prm
Message: iconv(): Wrong charset, conversion from `UTF-16LE' to `230787' is not allowed
BalasHapusgimana nih mas
coba tes "iconv('UTF-16LE', 'utf-8', 'test');" work atau ngk
Hapussource lengkapnya gak ada mas?
BalasHapusmas nama tabel, nama file di controller, file di modul dan file di viewnya apa y ?
BalasHapusMessage: iconv(): Wrong charset, conversion from `UTF-16LE' to `230787' is not allowed
BalasHapussudah dicoba menggunakan "iconv('UTF-16LE', 'utf-8', 'test');" tetapi data tidak terinput pada database