Halo semua, pada seri Belajar Codeigniter ini kita akan belajar cara import data excel ke database di codeigniter dengan mudah. Nah, pada artikel artikel sebelumnya tentang belajar codeigniter ini, kita sudah membahas berbagai macam hal ya. Mulai dari cara Install sampai dengan teknik CRUD dengan AJAX. Untuk artikel kali ini, kita akan bermain dengan librari PHPExcel sebagai handler dari excelnya.
Import data excel ke database di codeigniter sebenarnya sangat mudah. Meskipun librari PHPExcel sudah deprecated / tidak dikembangkan lagi sejak tahun 2017. Tetapi, librari ini masih bisa kalian gunakan untuk membuat sistem import data ke database mysql , postgresql dan lain lain. Mungkin kalau web kalian meminta fitur yang lebih, PHPExcel bukanlah jawaban yang tepat bagi web kamu. Selain itu, kamu juga bisa pake librari PHPSpreadsheet yang merupakan pengembangan lanjutan dari PHPExcel. Kita bakal bahas PHPSpreadsheet nanti, kali ini kita import data excel ke database di codeigniter menggunakan librari PHPExcel terlebih dahulu.
Persiapan, Siapkan Librari PHPExcel untuk Import data Excel ke database
Untuk langkah awal, tentu saja kita perlu untuk mendownload librari PHPExcel terlebih dahulu kemudian menaruhnya di folder third party untuk diload.
Kalian bisa download melalui link berikut, https://github.com/PHPOffice/PHPExcel
Download ZIP, kemudian ekstrak dan Copy Folder Classes yang ada di dalam ke folder third_party di Codeigniter.
Setelah itu, buatlah file baru di /application/libraries beri nama Excel.php.
Kemudian isi dengan kode berikut :
<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');require_once APPPATH."/third_party/PHPExcel.php";require_once APPPATH."/third_party/PHPExcel/IOFactory.php";class Excel extends PHPExcel {public function __construct() {parent::__construct();}}
Tujuan dari file Excel tersebut tentu saja untuk memuat PHPExcel yang berada di folder third party.
Kedua, Persiapkan database
Langkah kedua, kita akan menyiapkan database untuk menampilkan dan insert data.
Silahkan buat database baru dengan nama db_siswa.
Kemudian kalian bisa buat tabel dengan struktur seperti berikut :
Atau kalian juga bisa execute SQL di bawah untuk otomatis membuat tabel dan mengisi tabel dengan beberapa data
-- phpMyAdmin SQL Dump-- version 4.7.0-- https://www.phpmyadmin.net/---- Host: 127.0.0.1-- Generation Time: Jan 27, 2020 at 11:49 AM-- Server version: 10.1.22-MariaDB-- PHP Version: 7.1.4SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";SET AUTOCOMMIT = 0;START TRANSACTION;SET time_zone = "+00:00";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8mb4 */;---- Database: `db_sekolah`---- ------------------------------------------------------------ Table structure for table `tb_siswa`--CREATE TABLE `tb_siswa` (`id` int(5) NOT NULL,`noinduk` int(5) NOT NULL,`nama` varchar(50) NOT NULL,`hobi` varchar(30) DEFAULT NULL,`alamat` varchar(100) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;---- Dumping data for table `tb_siswa`--INSERT INTO `tb_siswa` (`id`, `noinduk`, `nama`, `hobi`, `alamat`) VALUES(1, 1001, 'Wawan Abdurrahman', 'Menyanyi', 'Jalan Merdeka'),(2, 1002, 'Maman Sulaiman', 'Renang', 'Jalan Sejahtera'),(3, 1003, 'Saipul Anwar', 'Basket', 'Jalan Gotong Royong'),(4, 1004, 'Dadang Suradang', 'Badminton', 'Jalan Kesempurnaan'),(5, 1005, 'Gadis Sulistyaningtyas', 'Memasak', 'Jalan Kebajikan');---- Indexes for dumped tables------ Indexes for table `tb_siswa`--ALTER TABLE `tb_siswa`ADD PRIMARY KEY (`id`),ADD UNIQUE KEY `noinduk` (`noinduk`);---- AUTO_INCREMENT for dumped tables------ AUTO_INCREMENT for table `tb_siswa`--ALTER TABLE `tb_siswa`MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;COMMIT;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Ketiga, Persiapkan Controller, Model, dan View
Langkah ketiga kita akan membuat Controller dengan nama C_Index, Model dengan nama M_Index , dan View dengan nama V_Index.
C_Index
Pertama kita akan membuat Controller terlebih dahulu, C_Index akan memiliki 2 fungsi antara lain Fungsi index dan fungsi import. Di fungsi index, kita akan meretrieve data dari database untuk ditampilkan di View,
Isi dengan kode seperti berikut :
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');class C_Index extends CI_Controller {function __construct(){parent::__construct();$this->load->model('M_index'); // load model m_index$this->load->library('Excel'); //load librari excel}public function index(){$data['data'] = $this->M_index->getData(); // ambil data dari M_Index$this->load->view('V_Index',$data);}public function importExcel(){$fileName = $_FILES['file']['name'];$config['upload_path'] = './assets/'; //path upload$config['file_name'] = $fileName; // nama file$config['allowed_types'] = 'xls|xlsx|csv'; //tipe file yang diperbolehkan$config['max_size'] = 10000; // maksimal sizze$this->load->library('upload'); //meload librari upload$this->upload->initialize($config);if(! $this->upload->do_upload('file') ){echo $this->upload->display_errors();exit();}$inputFileName = './assets/'.$fileName;try {$inputFileType = PHPExcel_IOFactory::identify($inputFileName);$objReader = PHPExcel_IOFactory::createReader($inputFileType);$objPHPExcel = $objReader->load($inputFileName);} catch(Exception $e) {die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());}$sheet = $objPHPExcel->getSheet(0);$highestRow = $sheet->getHighestRow();$highestColumn = $sheet->getHighestColumn();for ($row = 2; $row <= $highestRow; $row++){ // Read a row of data into an array$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,NULL,TRUE,FALSE);// Sesuaikan key array dengan nama kolom di database$data = array("noinduk"=> $rowData[0][0],"nama"=> $rowData[0][1]);$insert = $this->db->insert("tb_siswa",$data);}redirect('Index');}}
Pada kode berikut sudah saya tambahkan keterangan – keterangan setiap kode, jadi silahkan pahami sendiri ya. Kalau bingung bisa kalian ditanyakan di kolom komentar.
M_index
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');class M_index extends CI_Model {function getData(){return $this->db->get('tb_siswa')->result_array();}}
V_Index
Untuk bagian tampilan kita akan membuat tabel untuk menampilkan data dan juga satu buah form untuk melakukan import data excel ke database.
Buka dan tambahkan kode berikut ke V_Index.
<!DOCTYPE html><html><head><title>Import Excel KompiKaleng</title><style type="text/css">table {border-collapse: collapse;}table,td,th {border: 1px solid black;}form {margin-top: 10px;}</style></head><body><table><thead><tr><th>No</th><th>Nomor Induk</th><th>Nama</th></tr></thead><tbody><?php $no=0; foreach ($data as $key => $value): $no++; ?><tr><td><?= $no; ?></td><td><?= $value['noinduk'] ?></td><td><?= $value['nama']; ?></td></tr><?php endforeach; ?></tbody></table><form method="post" action="<?php echo base_url('C_Index/importExcel') ?>" enctype="multipart/form-data"><input type="file" name="file"><button type="submit">Submit</button></form></body></html>
Selesai
Projek kalian sudah selesai, saatnya lakukan trial.
Untuk tampilan kurang lebih akan terlihat seperti ini
Excel yang akan di-import :
Hasil :
Nah, bagaimana temen – temen? apa eksperimen kali ini berhasil?
Coba eksperimen CRUD dengan Ajax tanpa reload di sini :
Panduan Lengkap Membuat CRUD dengan AJAX dan Codeigniter
Untuk keterangan setiap kode di atas, sudah saya tambahkan beberapa keterangan untuk membantu kalian memahami setiap kode yang ada.
Kalau tutorial import data excel ke database di codeigniter kali ini berhasil kalian bisa share di kolom komentar ya 🙂 dan jangan lupa untuk tinggalkan komentar jika kalian merasa artikel ini bermanfaat.
Terimakasih.
Share This :
comment 12 komentar
more_vertsaya input file excel yang terdiri 4 baris, tetapi saat diinput yang masuk ke database cuma baris yang pertama saja. ada masalah dimana ya?
23 Agustus 2020 pukul 02.50bisa jadi di codingan bagian perulangannya bro
25 Agustus 2020 pukul 02.36@dwi: coba dipastekan codingannya, kita check bareng2
30 Agustus 2020 pukul 07.12folder-folder contoh itu ada direktori apa ya saya sudah mencari tapi belum ketemu mohon bantuan terima kasih
3 November 2020 pukul 20.14folder contoh yang mana ya yang dimaksud gan?
3 November 2020 pukul 21.00yang bikin tidak terbaca filenya apa ya?
12 April 2021 pukul 19.38soalnya kalo import responnya file does not exist.
saya ada eror
20 April 2021 pukul 20.25if ((isset(self::$comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset(self::$comparisonOperators[$formula[$index+1]))) [
erornya
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported
itu di libraries, calculation.php
php versi berapa ini?
21 Oktober 2021 pukul 00.33php versi 5,7, atau 8 aman kok
5 Januari 2022 pukul 16.31terimakasih min untuk tutorialnya, sangat membantu
3 Juni 2022 pukul 01.47terimakasih gan sangat membantu :D
15 Juni 2022 pukul 13.22ketika upload data dari choose file datanya berhasil terinput didatabase. namun datanya gk bisa terbaca di dashboar web sy.. mohon bantuannya
3 September 2022 pukul 09.13