Please enable JavaScript!
Bitte aktiviere JavaScript!
S'il vous plaît activer JavaScript!
Por favor,activa el JavaScript!
antiblock.org

 |  | 
Anda ingin membuat website?
Untuk Anda yang sedang mencari orang untuk jasa pembuatan website, Saya akan bantu buatkan aplikasi sesuai kebutuhan Anda. Segera hubungi : mail@rizaldimaulidia.com. Selengkapnya tentang profil saya klik www.rizaldimaulidia.com.

Codeigniter

Cara Membuat Import Data Dari Excel dengan Codeigniter dan PHPExcel

img-responsive

Sudah lama tidak update catatan, pada kesempatan ini. Saya akan coba berbagi kembali catatan/tutorial yang mudah-mudahan bisa bermanfaat yakni Cara Membuat Import Data Dari Excel dengan menggunakan Framework Codeigniter 3, librari PHPExcel (berguna untuk membantu kita membaca isi dari file excel yang akan diimport datanya), dan Database MySQL.


PENTING, MOHON DIBACA TERLEBIH DAHULU
Tutorial ini menggunakan librari PHPExcel untuk proses import excelnya. Librari ini setau saya dan sudah saya tes hanya mendukung sampai PHP Versi 7.2.8. Jadi bagi kamu yang pakai PHP Versi diatas 7.2.8, sebaiknya downgrade dulu atau download Xampp dimana PHP nya masih versi 7.2.8 ke bawah. Untuk tutorial PHP Versi 7.2.8 ke atas akan saya buatkan, jadi tunggu saja update tutorial selanjutnya.


Berikut adalah fitur-fitur yang akan kita buat:

  1. View Data dari Database.
  2. Form untuk Import Data.
  3. Preview Data yang akan diimport sebelum di simpan ke database.
  4. Validasi terhadap file yang dipilih oleh User pada form import. Hanya file Microsoft Office 2007 (.xlsx) yang diperbolehkan.
  5. Validasi terhadap input data. Jika ada data yang kosong / belum diisi, sistem akan memberitahu jumlah data yang kosong dan data mana saja.

DEMO
Sebelum masuk ke tutorialnya. Mungkin ada yang mau lihat demonya terlebih dahulu. Silahkan klik link berikut untuk melihat demonya : Lihat Demo.


STEP 1 – PERSIAPAN

  1. Buat sebuah folder dengan nama import_excel_ci lalu simpan pada folder xampp/htdocs/
  2. Buat sebuah folder dengan nama excel lalu simpan pada folder xampp/htdocs/import_excel_ci/
  3. Buat sebuah folder dengan nama js, lalu simpan pada folder xampp/htdocs/import_excel_ci/.
  4. Download plugin PHPExcel, klik link berikut : Download.
  5. Download Framework Codeigniter, klik link berikut : Download.
  6. Download Format Excel untuk proses import, klik link berikut : Download.
  7. Download Librari jQuery, Klik link berikut : Download.
  8. Copy and paste file codeigniter_v3.7z yang telah di download tadi ke folder xampp/htdocs/import_excel_ci/.
  9. Ekstrak file codeigniter_v3.7z nya.
  10. Ekstrak file PHPExcel.7z yang telah di download tadi, lalu copy and paste folder PHPExcel nya ke folder xampp/htdocs/import_excel_ci/application/third_party/.
  11. Rename file format_ci.xlsx yang telah didownload tadi menjadi format.xlsx, lalu copy and paste file tersebut ke folder xampp/htdocs/import_excel_ci/excel/.
  12. Copy and paste file jquery.min.js yang telah di download tadi ke folder xampp/htdocs/import_excel_ci/js/.

STEP 2 – DATABASE
Pada step ini, kita akan membuat databasenya. ikuti langkah-langkah berikut ini :

  1. Buat sebuah database dengan nama mynotescode
  2. Buat sebuah tabel dengan nama siswa. Struktur tabelnya sebagai berikut :
    Struktur Tabel - Cara Membuat Import Data Dari Excel dengan Codeigniter dan PHPExcel

    CREATE TABLE `siswa` (
      `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
      `nis` varchar(11) NOT NULL,
      `nama` varchar(50) NOT NULL,
      `jenis_kelamin` varchar(10) NOT NULL,
      `alamat` text NOT NULL
    )

STEP 3 – KONFIGURASI
Karena dibuat dengan Codeigniter, pertama kita harus melakukan konfigurasi terlebih dahulu pada framework codeigniternya.

  1. Buka folder xampp/htdocs/import_excel_ci/application/config/
  2. Buka file config.php
    Cari kode berikut $config['base_url'] = '';Ubah kode tersebut jadi seperti ini :

    $config['base_url'] = 'http://localhost/import_excel_ci/';

    Kode diatas digunakan untuk menset baseurlnya.
    Lalu simpan file tersebut.

  3. Buka file autoload.php
    Cari kode berikut ini :

    $autoload['libraries'] = array();
    $autoload['helper'] = array();

    Ubah jadi seperti ini :

    $autoload['libraries'] = array('database');
    $autoload['helper'] = array('url');

    Kode diatas digunakan untuk memuat (menload) class database dan url.
    Lalu simpan file tersebut.

  4. Buka file routes.php
    Cari kode berikut ini :

    $route['default_controller'] = 'welcome';

    Ubah jadi seperti ini :

    $route['default_controller'] = 'siswa';

    Kode diatas digunakan untuk menset controller mana yang akan diload pertama kali. Secara default, Codeigniter telah menset default controller yaitu welcome. Disini kita set default controller menjadi siswa.
    Lalu simpan file tersebut.

  5. Buka file database.php
    Cari kode berikut ini :

    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',

    Ubah jadi seperti ini :

    'hostname' => 'localhost', // Nama host
    'username' => 'root', // Username
    'password' => '', // Jika menggunakan password isi, jika tidak kosongkan saja
    'database' => 'mynotescode', // Nama databasenya

    Kode diatas digunakan untuk koneksi ke database.
    Lalu simpan file tersebut.


STEP 4 – BUAT MODEL
Langkah selanjutnya adalah membuat modelnya. Buat sebuah file dengan nama SiswaModel.php, Lalu simpan pada folder xampp/htdocs/import_excel_ci/application/models/. Berikut kodenya :

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class SiswaModel extends CI_Model {
  public function view(){
    return $this->db->get('siswa')->result(); // Tampilkan semua data yang ada di tabel siswa
  }
  
  // Fungsi untuk melakukan proses upload file
  public function upload_file($filename){
    $this->load->library('upload'); // Load librari upload
    
    $config['upload_path'] = './excel/';
    $config['allowed_types'] = 'xlsx';
    $config['max_size']	= '2048';
    $config['overwrite'] = true;
    $config['file_name'] = $filename;
  
    $this->upload->initialize($config); // Load konfigurasi uploadnya
    if($this->upload->do_upload('file')){ // Lakukan upload dan Cek jika proses upload berhasil
      // Jika berhasil :
      $return = array('result' => 'success', 'file' => $this->upload->data(), 'error' => '');
      return $return;
    }else{
      // Jika gagal :
      $return = array('result' => 'failed', 'file' => '', 'error' => $this->upload->display_errors());
      return $return;
    }
  }
  
  // Buat sebuah fungsi untuk melakukan insert lebih dari 1 data
  public function insert_multiple($data){
    $this->db->insert_batch('siswa', $data);
  }
}

Pada kode diatas, kita membuat sebuah fungsi view(). dimana didalamnya terdapat kode return $this->db->get(‘siswa’)->result(). Kode tersebut berfungsi untuk menampilkan semua data pada tabel siswa. Struktur dasar penulisannya seperti ini : return $this->db->get(‘nama_tabel‘)->result(). Lalu pada kode diatas juga ada kode return, kode tersebut digunakan untuk mengeluarkan hasil dari sebuah fungsi. Pada kasus diatas, hasil yang dikeluarkan oleh return yaitu data-data siswa.

Lalu terdapata function upload_file($filename), fungsi ini berfungsi untuk melakukan upload file excel yang akan di import datanya. Ada beberapa konfigurasi dalam uploadnya antara lain :

  1. $config[‘upload_path’] = ‘./excel/’;
    Berfungsi untuk menentukan folder untuk menyimpan file yang akan diupload. Dalam catatn ini, kita akan menguploadnya di folder excel yang berada di root direktori web (xampp/htdocs/import_excel_ci/excel).
  2. $config[‘allowed_types’] = ‘xlsx’;
    Berfungsi untuk memvalidasi file tipe apa saja yang boleh diupload.
  3. $config[‘max_size’]    = ‘2048’;
    Berfungsi untuk menentukan maksimal ukuran file yang boleh diupload dalam satuan Kb. Disini saya tentukan 2048 Kb = 2 MB.
  4. $config[‘overwrite’] = true;
    Berfungsi untuk me-replace file apabila di dalam folder (tempat menyimpan file uploadnya) sudah ada file dengan nama tersebut.
  5. $config[‘file_name’] = $filename;
    Berfungsi untuk menentukan dan me-rename file yang akan diupload sesuai keinginan. Dalam catatan ini, kita set nama filenya menjadi import_data.xlsx
  6. Untuk lebih lengkapnya mengenai konfiurasi apa saja yang bisa kita gunakan, Anda bisa lihat pada dokumentasi Codeigniternya langsung disini.

$this->upload->data()
Berfungsi untuk mengambil output dari hasil proses upload. outputnya berupa array seperti contoh berikut :

Array
(
  [file_name]     => mypic.jpg
  [file_type]     => image/jpeg
  [file_path]     => /path/to/your/upload/
  [full_path]     => /path/to/your/upload/jpg.jpg
  [raw_name]      => mypic
  [orig_name]     => mypic.jpg
  [client_name]   => mypic.jpg
  [file_ext]      => .jpg
  [file_size]     => 22.2
  [is_image]      => 1
  [image_width]   => 800
  [image_height]  => 600
  [image_type]    => jpeg
  [image_size_str] => width="800" height="200"
)

$this->upload->display_errors()
Berfungsi untuk mengambil pesan error apabila proses upload gagal.

$this->db->insert_batch(‘siswa’, $data);
Berfungsi untuk melakukan insert lebih dari 1 data sekaligus. Terdapat 2 parameter yang dibutuhkan oleh fungsi ini yakni :

  1. Parameter 1 : diisi dengan nama tabel
  2. Parameter 2 : diisi dengan array data yang akan di insert, contoh array nya :
    array(
      array('field1'=>'isi_field1','field2'=>'isi_field2'), // Data ke 1
      array('field1'=>'isi_field1','field2'=>'isi_field2') // Data ke 2
    )

Untuk lebih jelasnya mengenai insert_batch, silahkan anda lihat di dokumentasi nya langsung : klik disini.


STEP 5 – BUAT CONTROLLER
Pada tahap ini, kita akan membuat controllernya. Buat sebuah file dengan nama Siswa.php, lalu simpan pada folder xampp/htdocs/import_excel_ci/application/controllers/. Berikut ini kodenya :

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Siswa extends CI_Controller {
  private $filename = "import_data"; // Kita tentukan nama filenya
  
  public function __construct(){
    parent::__construct();
    
    $this->load->model('SiswaModel');
  }
  
  public function index(){
    $data['siswa'] = $this->SiswaModel->view();
    $this->load->view('view', $data);
  }
  
  public function form(){
    $data = array(); // Buat variabel $data sebagai array
    
    if(isset($_POST['preview'])){ // Jika user menekan tombol Preview pada form
      // lakukan upload file dengan memanggil function upload yang ada di SiswaModel.php
      $upload = $this->SiswaModel->upload_file($this->filename);
      
      if($upload['result'] == "success"){ // Jika proses upload sukses
        // Load plugin PHPExcel nya
        include APPPATH.'third_party/PHPExcel/PHPExcel.php';
        
        $excelreader = new PHPExcel_Reader_Excel2007();
        $loadexcel = $excelreader->load('excel/'.$this->filename.'.xlsx'); // Load file yang tadi diupload ke folder excel
        $sheet = $loadexcel->getActiveSheet()->toArray(null, true, true ,true);
        
        // Masukan variabel $sheet ke dalam array data yang nantinya akan di kirim ke file form.php
        // Variabel $sheet tersebut berisi data-data yang sudah diinput di dalam excel yang sudha di upload sebelumnya
        $data['sheet'] = $sheet; 
      }else{ // Jika proses upload gagal
        $data['upload_error'] = $upload['error']; // Ambil pesan error uploadnya untuk dikirim ke file form dan ditampilkan
      }
    }
    
    $this->load->view('form', $data);
  }
  
  public function import(){
    // Load plugin PHPExcel nya
    include APPPATH.'third_party/PHPExcel/PHPExcel.php';
    
    $excelreader = new PHPExcel_Reader_Excel2007();
    $loadexcel = $excelreader->load('excel/'.$this->filename.'.xlsx'); // Load file yang telah diupload ke folder excel
    $sheet = $loadexcel->getActiveSheet()->toArray(null, true, true ,true);
    
    // Buat sebuah variabel array untuk menampung array data yg akan kita insert ke database
    $data = array();
    
    $numrow = 1;
    foreach($sheet as $row){
      // Cek $numrow apakah lebih dari 1
      // Artinya karena baris pertama adalah nama-nama kolom
      // Jadi dilewat saja, tidak usah diimport
      if($numrow > 1){
        // Kita push (add) array data ke variabel data
        array_push($data, array(
          'nis'=>$row['A'], // Insert data nis dari kolom A di excel
          'nama'=>$row['B'], // Insert data nama dari kolom B di excel
          'jenis_kelamin'=>$row['C'], // Insert data jenis kelamin dari kolom C di excel
          'alamat'=>$row['D'], // Insert data alamat dari kolom D di excel
        ));
      }
      
      $numrow++; // Tambah 1 setiap kali looping
    }

    // Panggil fungsi insert_multiple yg telah kita buat sebelumnya di model
    $this->SiswaModel->insert_multiple($data);
    
    redirect("Siswa"); // Redirect ke halaman awal (ke controller siswa fungsi index)
  }
}

Saya akan sedikit jelaskan mengenai kode diatas.

$excelreader = new PHPExcel_Reader_Excel2007();
$loadexcel = $excelreader->load(‘excel/’.$this->filename.’.xlsx’);
$sheet = $loadexcel->getActiveSheet()->toArray(null, true, true ,true);
Kode ini berfungsi untuk membaca isi dari file excel yang telah kita upload sebelumnya. Hasilnya nanti akan menjadi array yang akan kit looping menggunakan foreach pada file form.php.

array_push($data, [
    ‘nis’=>$row[‘A’],
    ‘nama’=>$row[‘B’],
    ‘jenis_kelamin’=>$row[‘C’],
    ‘alamat’=>$row[‘D’],
]);
Kode ini berfungsi untuk menambahkan array baru ke dalam variabel $data. Nantinya variabel data akan terisi array seperti berikut :

array(
  array('nis'=>'isi dari nis 1', 'nama'=>'isi dari nama 1', 'jenis_kelamin'=>'isi dari jenis kelamin 1', 'alamat'=>'isi dari alamat 1'),
  array('nis'=>'isi dari nis 2', 'nama'=>'isi dari nama 2', 'jenis_kelamin'=>'isi dari jenis kelamin 2', 'alamat'=>'isi dari alamat 2'),
  array('nis'=>'isi dari nis 3', 'nama'=>'isi dari nama 3', 'jenis_kelamin'=>'isi dari jenis kelamin 3', 'alamat'=>'isi dari alamat 3'),
)

STEP 6 – VIEW
Langkah selanjutnya adalah membuat file view untuk menampilkan interface / antarmukanya. Buat sebuah file dengan nama view.php, lalu simpan pada folder xampp/htdocs/import_excel_ci/application/views/. Berikut tampilan dan kodenya :

View - Cara Membuat Import Data Dari Excel dengan Codeigniter dan PHPExcel

<html>
<head>
  <title>IMPORT EXCEL CI 3</title>
</head>
<body>
  <h1>Data Siswa</h1><hr>
  <a href="<?php echo base_url("index.php/siswa/form"); ?>">Import Data</a><br><br>

  <table border="1" cellpadding="8">
  <tr>
    <th>NIS</th>
    <th>Nama</th>
    <th>Jenis Kelamin</th>
    <th>Alamat</th>
  </tr>

  <?php
  if( ! empty($siswa)){ // Jika data pada database tidak sama dengan empty (alias ada datanya)
    foreach($siswa as $data){ // Lakukan looping pada variabel siswa dari controller
      echo "<tr>";
      echo "<td>".$data->nis."</td>";
      echo "<td>".$data->nama."</td>";
      echo "<td>".$data->jenis_kelamin."</td>";
      echo "<td>".$data->alamat."</td>";
      echo "</tr>";
    }
  }else{ // Jika data tidak ada
    echo "<tr><td colspan='4'>Data tidak ada</td></tr>";
  }
  ?>
  </table>
</body>
</html>

Pada kode diatas terdapat kode foreach($siswa as $data){, kode tersebut akan manampilkan satu per satu data siswa sampai data siswa yang terakhir.
echo “<td>”.$data->nis.”</td>”;
echo “<td>”.$data->nama.”</td>”;
echo “<td>”.$data->jenis_kelamin.” </td>”;
echo “<td>”.$data->alamat.”</td>”;
Pada kode diatas, yang saya beri tanda merah. Itu harus sama dengan nama kolom / field yang ada di database tabel siswa.


STEP 7 – FORM
Terakhir, kita akan buat form untuk import datanya. Buat sebuah file dengan nama form.php, lalu simpan pada folder xampp/htdocs/import_excel_ci/application/views/. Berikut tampilan dan kodenya :

Form - Cara Membuat Import Data Dari Excel dengan Codeigniter dan PHPExcel

<html>
<head>
  <title>Form Import</title>
  
  <!-- Load File jquery.min.js yang ada difolder js -->
  <script src="<?php echo base_url('js/jquery.min.js'); ?>"></script>
  
  <script>
  $(document).ready(function(){
    // Sembunyikan alert validasi kosong
    $("#kosong").hide();
  });
  </script>
</head>
<body>
  <h3>Form Import</h3>
  <hr>
  
  <a href="<?php echo base_url("excel/format.xlsx"); ?>">Download Format</a>
  <br>
  <br>
  
  <!-- Buat sebuah tag form dan arahkan action nya ke controller ini lagi -->
  <form method="post" action="<?php echo base_url("index.php/Siswa/form"); ?>" enctype="multipart/form-data">
    <!-- 
    -- Buat sebuah input type file
    -- class pull-left berfungsi agar file input berada di sebelah kiri
    -->
    <input type="file" name="file">
    
    <!--
    -- BUat sebuah tombol submit untuk melakukan preview terlebih dahulu data yang akan di import
    -->
    <input type="submit" name="preview" value="Preview">
  </form>
  
  <?php
  if(isset($_POST['preview'])){ // Jika user menekan tombol Preview pada form 
    if(isset($upload_error)){ // Jika proses upload gagal
      echo "<div style='color: red;'>".$upload_error."</div>"; // Muncul pesan error upload
      die; // stop skrip
    }
    
    // Buat sebuah tag form untuk proses import data ke database
    echo "<form method='post' action='".base_url("index.php/Siswa/import")."'>";
    
    // Buat sebuah div untuk alert validasi kosong
    echo "<div style='color: red;' id='kosong'>
    Semua data belum diisi, Ada <span id='jumlah_kosong'></span> data yang belum diisi.
    </div>";
    
    echo "<table border='1' cellpadding='8'>
    <tr>
      <th colspan='5'>Preview Data</th>
    </tr>
    <tr>
      <th>NIS</th>
      <th>Nama</th>
      <th>Jenis Kelamin</th>
      <th>Alamat</th>
    </tr>";
    
    $numrow = 1;
    $kosong = 0;
    
    // Lakukan perulangan dari data yang ada di excel
    // $sheet adalah variabel yang dikirim dari controller
    foreach($sheet as $row){ 
      // Ambil data pada excel sesuai Kolom
      $nis = $row['A']; // Ambil data NIS
      $nama = $row['B']; // Ambil data nama
      $jenis_kelamin = $row['C']; // Ambil data jenis kelamin
      $alamat = $row['D']; // Ambil data alamat
      
      // Cek jika semua data tidak diisi
      if($nis == "" && $nama == "" && $jenis_kelamin == "" && $alamat == "")
        continue; // Lewat data pada baris ini (masuk ke looping selanjutnya / baris selanjutnya)
      
      // Cek $numrow apakah lebih dari 1
      // Artinya karena baris pertama adalah nama-nama kolom
      // Jadi dilewat saja, tidak usah diimport
      if($numrow > 1){
        // Validasi apakah semua data telah diisi
        $nis_td = ( ! empty($nis))? "" : " style='background: #E07171;'"; // Jika NIS kosong, beri warna merah
        $nama_td = ( ! empty($nama))? "" : " style='background: #E07171;'"; // Jika Nama kosong, beri warna merah
        $jk_td = ( ! empty($jenis_kelamin))? "" : " style='background: #E07171;'"; // Jika Jenis Kelamin kosong, beri warna merah
        $alamat_td = ( ! empty($alamat))? "" : " style='background: #E07171;'"; // Jika Alamat kosong, beri warna merah
        
        // Jika salah satu data ada yang kosong
        if($nis == "" or $nama == "" or $jenis_kelamin == "" or $alamat == ""){
          $kosong++; // Tambah 1 variabel $kosong
        }
        
        echo "<tr>";
        echo "<td".$nis_td.">".$nis."</td>";
        echo "<td".$nama_td.">".$nama."</td>";
        echo "<td".$jk_td.">".$jenis_kelamin."</td>";
        echo "<td".$alamat_td.">".$alamat."</td>";
        echo "</tr>";
      }
      
      $numrow++; // Tambah 1 setiap kali looping
    }
    
    echo "</table>";
    
    // Cek apakah variabel kosong lebih dari 0
    // Jika lebih dari 0, berarti ada data yang masih kosong
    if($kosong > 0){
    ?>	
      <script>
      $(document).ready(function(){
        // Ubah isi dari tag span dengan id jumlah_kosong dengan isi dari variabel kosong
        $("#jumlah_kosong").html('<?php echo $kosong; ?>');
        
        $("#kosong").show(); // Munculkan alert validasi kosong
      });
      </script>
    <?php
    }else{ // Jika semua data sudah diisi
      echo "<hr>";
      
      // Buat sebuah tombol untuk mengimport data ke database
      echo "<button type='submit' name='import'>Import</button>";
      echo "<a href='".base_url("index.php/Siswa")."'>Cancel</a>";
    }
    
    echo "</form>";
  }
  ?>
</body>
</html>

Saya tidak akan menjelaskan soal skrip diatas, karena sudah saya jelaskan per masing-masing skrip (dengan komentar). Tapi saya akan jelaskan alur form import diatas. Pertama, User harus mendownload Format File Excel yang sudah kita buat sebelumnya. Kedua, User megisi data yang akan diimport pada file excel yang telah di download tadi. Ketiga, user memilih file excel yang akan diimport datanya lalu klik tombol preview. Keempat, Ketika user mengklik tombol preview, sistem akan melakukan:

  1. Validasi apakah file yang dipilih memiliki format microsoft excel 2007 (.xlsx) atau tidak
  2. Validasi apakah user telah mengisi semua data yang diperlukan pada file excel tersebut. Jika masih ada yang kosong / belum diisi, sistem akan memberi informasi berupa jumlah data yang masih kosong dan memberi tahu user data mana saja yang kosong dengan cara memberi background merah pada kolom / baris yang kosong (pada tabel preview)
  3. Apabila lolos dari kedua validasi yang saya sebutkan diatas, sistem akan memunculkan tombol Import untuk melakukan proses import data. Tapi apabila ternyata tidak lolos validasi, tombol import tidak akan muncul.

Mungkin sekian untuk catatan kali ini. Semoga bisa bermanfaat. Jika ada yang kurang dipahami, langsung tanyakan pada form komentar dibawah ini. Jangan lupa LIKE dan SHARE nya, Terimakasih banyak.

Happy Coding ^_^


SOURCE CODE
Untuk mengunduh source code nya, klik link berikut ini : Download.


SUMBER & REFERENSI
Dokumentasi Codeigniter : https://www.codeigniter.com/user_guide
Dokumentasi PHPExcel : https://github.com/PHPOffice/PHPExcel/wiki/User%20Documentation
Tutorial membuat import data dari excel dengan codeigniter dan phpexcel, tutorial import excel dengan codeigniter 3 dan mysql, cara mudah membuat import data dari excel dengan codeignite 3 dan phpexcel, cara mudah membuat import excel dengan codeigniter 3 dan mysql.

Import Excel

(Total : 56,911 viewers, 8 viewers today)
import-excel-codeigniter-phpexcel

ABOUT THE AUTHOR

Interested in android programming, long time focused on web development. Visit My Profile Site at www.rizaldimaulidia.com

POST YOUR COMMENTS TO Rizaldi Maulidia Achmad (Cancel)

Your email address will not be published. Required fields are marked *

Name *

Email *

Website

149 Comments

  1. Djayadi D

    A PHP Error was encountered
    Severity: Warning

    Message: require(C:\xampp\htdocs\class\application\third_party\PHPExcel/PHPExcel/Autoloader.php): failed to open stream: No such file or directory

    Filename: PHPExcel/PHPExcel.php

    Line Number: 6

    Backtrace:

    File: C:\xampp\htdocs\class\application\third_party\PHPExcel\PHPExcel.php
    Line: 6
    Function: _error_handler

    File: C:\xampp\htdocs\class\application\third_party\PHPExcel\PHPExcel.php
    Line: 6
    Function: require

    File: C:\xampp\htdocs\class\application\controllers\Siswa.php
    Line: 148
    Function: include

    File: C:\xampp\htdocs\class\index.php
    Line: 315
    Function: require_once

    • Itu librari PHPExcel nya belum didownload. coba download dulu (ada pada step 1). lalu copy ke folder application/third_party/

  2. Kornelius Sitanggang

    Kalau begini gimana Bang ?

    A PHP Error was encountered
    Severity: 8192

    Message: Array and string offset access syntax with curly braces is deprecated

    Filename: Shared/String.php

    Line Number: 538

    Backtrace:

    File: C:\xampp\htdocs\import_excel_ci\application\third_party\PHPExcel\PHPExcel\Autoloader.php
    Line: 79
    Function: _error_handler

    File: C:\xampp\htdocs\import_excel_ci\application\third_party\PHPExcel\PHPExcel\Autoloader.php
    Line: 79
    Function: require

    File: C:\xampp\htdocs\import_excel_ci\application\third_party\PHPExcel\PHPExcel\Autoloader.php
    Line: 11
    Function: spl_autoload_call

    File: C:\xampp\htdocs\import_excel_ci\application\third_party\PHPExcel\PHPExcel.php
    Line: 6
    Function: require

    File: C:\xampp\htdocs\import_excel_ci\application\controllers\Siswa.php
    Line: 25
    Function: include

    File: C:\xampp\htdocs\import_excel_ci\index.php
    Line: 315
    Function: require_once

  3. azimatul k

    kalau responnya Error loading file “094938.xlsx”: Could not open uploads/dokumen/impor/094938.xlsx for reading! File does not exist.
    sedangkan file masih ada dan tidak dipindah lokasinya, kenapa ya bang?

    • file does not exists. berarti file excelnya gagal di upload, jadi ketika mau dibaca dia tidak bisa. pastikan file yang di upload ada di folder tujuan uploadnya

  4. sigit pangestu

    yang versi phpnya support php 7.4 belum dibuatkan gan?

  5. Edhi Prabawa

    Mohon info/solusi Gan, kalau muncul seperti ini harus gimana ya (tanpa harus menurunkan grade versi PHP-nya.?

    A PHP Error was encountered

    Severity: Notice

    Message: Trying to access array offset on value of type int

    Filename: Cell/DefaultValueBinder.php

    Line Number: 82

  6. Farah Afifah

    gan kalau bagian ini , ingin otomatis dari kolom excel bagaimana ya . soal nya kolom nya banyak
    foreach($sheet as $row){
    // Cek $numrow apakah lebih dari 1
    // Artinya karena baris pertama adalah nama-nama kolom
    // Jadi dilewat saja, tidak usah diimport
    if($numrow > 1){
    // Kita push (add) array data ke variabel data
    array_push($data, array(
    ‘nis’=>$row[‘A’], // Insert data nis dari kolom A di excel
    ‘nama’=>$row[‘B’], // Insert data nama dari kolom B di excel
    ‘jenis_kelamin’=>$row[‘C’], // Insert data jenis kelamin dari kolom C di excel
    ‘alamat’=>$row[‘D’], // Insert data alamat dari kolom D di excel
    ));
    }

    $numrow++; // Tambah 1 setiap kali looping
    }

      • Farah Afifah

        $excel = new PHPExcel();
        $excel->setActiveSheetIndex(0);
        if($dataExport)
        { $no = 0;
        foreach($dataExport as $det)
        {
        $excel->getActiveSheet()->setCellValueByColumnAndRow($current_col, $current_row, $dataExport[$no]);
        //set cell style
        $excel->getActiveSheet()->getStyleByColumnAndRow($current_col, $current_row);
        //move to next column
        $excel->getActiveSheet()->getStyleByColumnAndRow($current_col, $current_row)->applyFromArray($style_col);
        $excel->getActiveSheet()->getColumnDimension($current_col, $current_row)->setWidth(20);
        $no++;
        $current_col++;
        }
        }

        untuk proses eksport nya saya sudah otomatis , nah tinggal import nya . deklarasi kolom nya pakai array

  7. gilangggg

    An uncaught Exception was encountered
    Type: Error

    Message: Class ‘ZipArchive’ not found

    error gini kenapa ya gan?

    • itu karena ekstensi ZipArchive ada php nya belum aktif atau belum di install. coba pertama cari dulu di google cara aktifin ekstensi tersebut. kalau memang sudah aktif, cari cara install ekstensi tersebut

  8. soffyaaan

    apakah harus menggunakan Ms.excel 2007 bng?

    • maksudnya disini bukan harus menggunakan aplikasi microsoft excel 2007, mau pakai aplikasi microsoft office terbaru juga tidak masalah, asalkan ketika di save harus yang ekstensi “.xlsx”

  9. A PHP Error was encountered
    Severity: 8192

    Message: Array and string offset access syntax with curly braces is deprecated

    Filename: Shared/String.php

    Line Number: 526

    Backtrace:

    File: C:\xampp\htdocs\kuesioner\application\third_party\PHPExcel\PHPExcel\Autoloader.php
    Line: 79
    Function: _error_handler

    File: C:\xampp\htdocs\kuesioner\application\third_party\PHPExcel\PHPExcel\Autoloader.php
    Line: 79
    Function: require

    File: C:\xampp\htdocs\kuesioner\application\third_party\PHPExcel\PHPExcel\Autoloader.php
    Line: 11
    Function: spl_autoload_call

    File: C:\xampp\htdocs\kuesioner\application\third_party\PHPExcel\PHPExcel.php
    Line: 6
    Function: require

    File: C:\xampp\htdocs\kuesioner\application\controllers\Import.php
    Line: 55
    Function: include

    File: C:\xampp\htdocs\kuesioner\index.php
    Line: 315
    Function: require_once

    error saya gitu gan, itu pinginnya cuman mau saya isi di column tertentu saja sih

    • buka file application/third_party/PHPExcel/PHPExcel/Shared/String.php. cari kode :
      $c0 = ord($str{0});
      $c1 = ord($str{1});

      ubah kode tersebut jadi :
      $c0 = ord($str[0]);
      $c1 = ord($str[1]);

  10. Bustomi Wildan

    terimakasih gan atas tutorialnya. cuman pas saya mau download source codenya muncul ini ya Oops, looks like the page is lost.
    This is not a fault, just an accident that was not intentional.

    terimakasih

    • sama-sama om, senang bisa membantu 😀
      Maaf om, ada kesalahan pada link downloadnya, sudah saya perbaiki. Kalau masih belum bisa, coba Clear Cache browsernya dulu, lalu coba lagi. Mohon Maaf sebelumnnya.

  11. Raharjo Ismail

    Jika import 1 file ke excel tapi diimport ke beberapa tabel data gimana caranya?

  12. arfiansyah

    klo melihat download format file nya dimana ya mas? saya mau ubah contoh format nya?

  13. Eko Prasetyo

    Bang mau tanya,
    pada saat proses import tidak ada notif gagal/error yang keluar cuma notif ” no file selected ” itu kenapa ya ?
    pas saya proses upload di lokasi file localhost/selawe/admin/uploadshipment

    tapi saat saya upload di luar url itu seperti
    localhost/import/index.php
    berhasil upload

    itu kenapa ya ?

    • no selected file kemungkinan uploadnya gagal. untuk proses upload yang harus paling di perhatikan adalah Path tempat si file yang akan diupload disimpan harus benar. Periksa lagi path tempat uploadnya apa sudah benar atau belum. kalau misal om buat folder uploadnya path nya di selawe/upload. dan om simpan skrip importnya di selawe/admin/uploadshipment/import.php. maka path di dalam import.php nya harus seperti ini : $path = "../../upload/".$namafile;. $namafile itu diambil dari $_FILES['file']['name']. “file” nya itu harus sama dengan name input type file di form uploadnya.

  14. Ratna karmila

    Mas mau tanya, kalo fotmat file nya xls ko gabisa ya, pdahal di controller format file sudah saya ubah ke xls

    • kalau xls coding ini nya harus di ubah :
      $excelreader = new PHPExcel_Reader_Excel2007();

      jadi :
      $excelreader = new PHPExcel_Reader_Excel5();

  15. bima natawijaya

    bro ada error seperti ini (call_user_func_array() expects parameter 1 to be a valid callback, class ‘Error’ does not have a method ‘index’), itu kenapa ya ? sudah saya cari di mbah google ttapi belom solved

    • ini error sepertinya salah url nya om, errornya muncul ketika melakukan apa?
      Mohon maaf baru sempat balas om

  16. Hendra HER

    Mas Bro, nanya dong itu kalau import nya bukan pakai Microsoft Excell gak bisa ya ? saya pakai WPS Office sama Libre Office
    muncul notif “The filetype you are attempting to upload is not allowed.” itu gimana ya solusinya ? mohon pencerahannya, thanks

    • ya om saya juga sudah pengalaman terkait hal ini, saya sudah cek juga padahal mime type filenya sama, kasusnya seperti saya yang pakai Libre Office, hasilnya sama seperti itu, lalu saya coba pakai Microsoft Office, ternyata bisa, saya tanya ke forum katanya karena walaupun mime type sudah sama, ada perbedaan antara file yang dari MS.Office dan Libre Office. Satu-satunya cara paling harus pakai MS. Office om

      • Faishal Ammar Rasyiq

        Mas punya saya ada tulisan The upload destination folder does not appear to be writable. itu kenapa ya..?

        • pakai OS apa om komputernya? kalau pakai linux, harus di buka dulu permissionnya dengan cara ketik perintah ini di terminal :
          sudo chmod -R 777 /path/to/folder/excel

  17. Alifah AP

    Mas, kalau saya mau kasih alert tanda merah , contohnya NIM tidak boleh sama. (alert merah seperti jika cell kosong). kodingannya diterapkannya disebelah mana ya mas? dan kodingannya apa ya? saya coba tapi gagal terus. Terimakasih

    • intinya harus buat query lagi di dalam looping $sheet nya untuk mengecek apakah data dengan nim tersebut sudah ada tau belum. querynya paling seperti ini : SELECT COUNT(*) AS jml FROM namatabel WHERE nim=$ambilnimdrexcel

      nanti tinggal pakai if….else… adri hasil query tersebut

  18. Aldi Aldi

    A PHP Error was encountered

    Severity: Notice

    Message: Undefined index: D

    Filename: views/form.php

    Line Number: 73

    Backtrace:

    File: C:\xampp\htdocs\import_excel_ci\application\views\form.php
    Line: 73
    Function: _error_handler

    File: C:\xampp\htdocs\import_excel_ci\application\controllers\Siswa.php
    Line: 40
    Function: view

    File: C:\xampp\htdocs\import_excel_ci\index.php
    Line: 315
    Function: require_once

    Mas Source code nya error disini, gimana ya cara memperbaikinya

  19. yoga muhamad

    mau tanya ketika saya klik upload dan preview sudah muncul datanya,
    bagian errornya itu data sudah terisi namun ada alert data belum terisi semua, ketika di klik import data ter refresh tampa masuk ke database atau data di CI ??

  20. Adam Khadafi

    Validasi untuk datanya saat di masukkan data yang sama tapi ter replace gimana gann ?

  21. Adam Khadafi

    Mau nanya gan , cara membuat jam upload gimana ya ? scriptnya gimana mass , dan letak scriptnya dimana ?

  22. syafrilhidayat

    A PHP Error was encountered
    Severity: Notice

    Message: Undefined index: A
    Message: Undefined index: B
    Message: Undefined index: C
    Message: Undefined index: D

    pada form.php.. minta tolong bantuannya kenapa ya?

  23. Adam Khadafi

    Mau nanya gan ,
    ini kan saya sudah clear semua , tetapi ini datanya ada yang kosong , gimana ya supaya bisa di import ?

    dan tombol importnya tidak muncul
    trims 🙂

    • untuk menghilangkan validasi kosong, pada file form.php pada tutorial ini, hapus line 109 s/d 120 dan juga hapus line 126

  24. Habialfa

    misalkan error semua data belum di isi itu gmna ???

    • pada tutorial ini ada validasi semua data dalam 1 row harus diisi. Codingnya itu ada pada form.php di line 90 – 92. kalau om nya ga mau ada validasi gitu, cukup hapus saja coding di line tersebut

  25. agus_sum

    jadi cerita nya mau import data absensi, berhasil import, tapi kok yang ke baca cuma 1 record doang yah ..
    padahal yg di import ada banyak record,
    trus ngebaca tipe data yg harusnya jam:menit:detik jadi 00:00:20.000000 ,
    itu kenapa ya ?
    tengkiu sebelumnnya gan

    • pada fungsi import() di controller Siswa, disitu coba print_r($data);die; simpan setelah looping $sheet nya, biar keliatan data yang akan disimpan jumlahnya ada berapa

      Untuk masalah time, itu tipe data di databasenya apa?

  26. Alfathsp

    Mau tanya gan kalau misal data yang kosong di beri warna merah lalu data yang duplikat sama database dikasih warna kuning kira2 scriptnya gimana ya?

    • kuncinya :
      1. Buat query di dalam looping $sheet nya untuk mengecek apakah data tersebut sudah ada atau belum
      2. Gunakan if…else… pada hasil query tadi, jika datanya ada, maka bikin variabel misal $color_duplicate = ” style=’background: yellow;'”, jika data belum ada $color_duplicate = “”;
      3. Aplikasikan variabel $color_duplicate tadi ke tag td yg mau diberi warna

  27. ronny chandra

    om, folder excel yang dibuat, ga di apa2in..? kok pas pencet link download format, eror..?

    The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.

    If you think this is a server error, please contact the webmaster.

    • Oh maaf om itu saya kelewat menyertakan link download format excelnya pada step 1. Silahkan dicek kembali pada STEP 1 sudah saya update tutorialnya om, Terimakasih atas laporannya

  28. Aditya Pra

    Saya mau import data excel nya, tapi jika datanya dalam format accounting. datanya ga kebaca, cuman jadi angka 0. ada solusi ga mas?

  29. alexander

    Mas, saya sudah masukin data dah bener tp kok tetap ga mau masuk ke database ya?, pas klik import lalu masuk ke view.php, setelah di reload webnya, table nya jadi kosong lagi

  30. Andre De

    Gan.. kalau mau check duplikat data untuk di tampilkan pada preview dgn backgound data yang duplikat warna kuning gimana gan ?

    • untuk melakukan ini pada saat looping $sheet nya lakukan query lagi didalamnya om, lalu tambahkan if dan else nya

  31. fendy augusfian

    misi gan, ingin bertanya
    kalau misal kolom isinya angka 0 kenapa kedetek gak bisa ya? (jadi warna merah) padahal kan harusnya yg warna merah cuma kalau kolomnya gak ada apa apa
    bagaimana caranya supaya 0 tetep bisa included buat diinsert ke database?
    terima kasih

    • oh iya om saya lupa ganti. di PHP jika kita gunakan if(empty($value)) maka empty() disitu akan menganggap kosong walau si $value isinya 0. jadi harus diganti jadi if($value == ”)

      Pada file views/form.php, cari koding berikut :
      if(empty($nis) or empty($nama) or empty($jenis_kelamin) or empty($alamat)){
      $kosong++; // Tambah 1 variabel $kosong
      }

      ubah jadi gini :
      if($nis == "" or $nama == "" or $jenis_kelamin == "" or $alamat == ""){
      $kosong++; // Tambah 1 variabel $kosong
      }

  32. Jufrieee

    Om.. kalau saya mau menambah data utk setiap brisnya di luar dari excel sheet.
    contoh..
    upload_id – auto increment
    upload_by – user login
    upload_date – tgl saat upload
    gimana om ya ?

    • tinggal tambahkan datanya pada fungsi import pas coding ini :
      array_push($data, array(
      'nis'=>$row['A'], // Insert data nis dari kolom A di excel
      'nama'=>$row['B'], // Insert data nama dari kolom B di excel
      'jenis_kelamin'=>$row['C'], // Insert data jenis kelamin dari kolom C di excel
      'alamat'=>$row['D'], // Insert data alamat dari kolom D di excel
      ));

      tambahkan jadi gini :

      array_push($data, array(
      'nis'=>$row['A'], // Insert data nis dari kolom A di excel
      'nama'=>$row['B'], // Insert data nama dari kolom B di excel
      'jenis_kelamin'=>$row['C'], // Insert data jenis kelamin dari kolom C di excel
      'alamat'=>$row['D'], // Insert data alamat dari kolom D di excel
      'upload_id'=>'isi_upload_id',
      'upload_by'=>'isi_upload_by',
      'upload_date'=>'isi_upload_date'
      ));

  33. Kilamzzz

    Thanks gan, sangat bermanfaat sekali, buat tugas akhir saya. Sukses terus gan.

  34. Putri re

    Kak, klo d klik preview muncul error “The upload path does not appear to be valid.” Kenapa Ya??

  35. Eko Susanto

    Ada bbrp yg mw sy tanyakan om:
    1. Menambahkan validasi format tanggal ketika import, jadi tdk hanya data kosong, tapi field tanggal harus sesuai dgn format yg kita inginkan d/m/Y
    2. Validasi data yg diinput harus ada di database, misal ada kolom kode desa, nah kode desa ini harus tersedia datanya di tabel referensi desa
    Sementara ini dulu yg sy tanyakan, mohon bantuannya om. Terima kasih.

  36. Eko Susanto

    Mau tanya kalo validasi jumlah karakter, format tanggal, dan cek data ada di referensi gmn ya? Maksdny yg format tgl sy ingin selalu DD/MM/YYYY dan referensi mksdnya ada 1 kolom yg data inputannya harus tersedia di tabel database yg lain, misal sy mw import kode desa, nah kode ini harus ada di tabel referensi desa nya. Mohon bantuan. Terima kasih.

    • untuk format tanggal, nanti ke database tipe datanya apa? date? kalau date dia harus yyyy-mm-dd format ke database pas insertnya, tapi nanti aps di tampilkan bisa di manipulasilagi dengan php nya, coding nya kaya gini : date('d/m/Y', strtotime($tgldaridatabase)).

      Lalu untuk cek data ke tabel lain sebelum di import, pas looping $sheet, om bikin query untuk mengecek data desa berdasarkan kode dari excel yang di import. querynya kaya gini : "SELECT COUNT(*) AS Jumlah FROM tabeldesa WHERE kode='$kodedariexcel'"
      nanti tinggal di if…. else….

      • Adam Khadafi

        Cara memasukkan jam uploadnya gimana ya gan? Script nya untuk memasukkan tanggal upload gimana , dan dimana letak di buat scriptnya gann ?

    • Pada file controllers/Siswa.php, cari skrip berikut pada fungsi import() :
      if($numrow > 1){

      ubah jadi :
      if($numrow > 2){

      lalu pada file views/form.php, cari skrip berikut :
      if($numrow > 1){

      ubah juga jadi :
      if($numrow > 2){

  37. dewi1997

    kak ko linknya ngak bisa download yah??

  38. Rizal Fadilah

    Bagaimana cara validasi jika nis data import dengan di database sama, maka akan memberikan background warna di colom yang sama?
    mohon bantuannya gan

    • konsepnya sama seperti pertanyaan om sebelumnya, tinggal panggil model cek_nis (lihat balasan saya pada pertanyaan om yang pertama). Jadi ketika looping $sheet panggil fungsi tersebut

  39. Rizal Fadilah

    kalo misalkan datanya ada yang sama. validasinya gimana gan?
    misal kita mau import nis 123456, 654321, dan 897900. ternyata di database nis tersebut sudah ada. gimana buat validasinya gan? agar tidak lolos. mohon bantuannya.
    terima kasih

    • ketika looping $sheet, di dalam looping nya bikin query lagi ke mysql. untuk mengecek apakah NIS sudah ada atau belum. buat aja sebuah fungsi baru di model siswa untuk melakukan cek data tersebut.

      public function cek_nis($nis){
      $this->db->where('nis', $nis);
      $count = $this->db->get('siswa')->num_rows();

      if($count > 0){
      return true; // NIS Sudah ada
      else
      return false; // NIS Belum ada
      }

      • iqbal Roziq

        saya sudah coba gini gan, dan berhasil masuk klo tidak ada data yang sama satupun & gagal klo ada data yang sama 1 saja.

        foreach($sheet as $row){

        $nis = $row[‘A’];
        $cek = $this->Admin_model->cekId(‘siswa’, ‘nis’, $nis);
        $masuk = 0;
        if( $cek == false ) { //jika tidak ada yang sama
        if($numrow > 1){
        // Kita push (add) array data ke variabel data
        array_push($data, array(
        … isi data data yang diinsert…
        ));
        }
        $masuk++;
        }

        $numrow++; // Tambah 1 setiap kali looping
        }

        // Panggil fungsi insert_multiple yg telah kita buat sebelumnya di model
        if( $masuk > 1 ) {
        $this->ImportModel->insert_multiple($data);
        $this->session->set_flashdata(‘berhasil’, ‘Data Siswa berhasil ditambahkan’);
        } else {
        $this->session->set_flashdata(‘gagal’, ‘Data Siswa sudah ada’);
        }

        nah tapi jika ada data yang sama 1 saja maka dianggap gagal, solusi agar yang sama di ignore sedangkan yang lain masuk gimana ya gan

        • mohon kirim file php nya om via fanspage fb kami. biar enak saya cek nya atau mungkin copas ke pastebin*com

          • agus supriyadi

            gan saya copy script dari komen yang di bawah untuk cek data nis yang sudah terdaftar cara supaya ignor data yang sama dengan data base bagaimana

            https://pastebin.com/UShTMyGf

            terimakasih

  40. viandsyahrezah

    mas pas aku tekan tombol preview.y kok error.. mohon solusinya..
    A PHP Error was encountered
    Severity: Notice

    Message: Undefined property: input_nasabah::$filename

    Filename: controllers/Input_nasabah.php

    Line Number: 32

    Backtrace:

    File: C:\xampp\htdocs\monitoring\application\controllers\Input_nasabah.php
    Line: 32
    Function: _error_handler

    File: C:\xampp\htdocs\monitoring\index.php
    Line: 315
    Function: require_once

      • zulhan19

        mas pas aku tekan tombol preview.y kok error.. mohon solusinya..
        A PHP Error was encountered
        Severity: Notice

        Message: Undefined property: Vendors::$filename

        Filename: controllers/Vendors.php

        Line Number: 21

        Backtrace:

        File: C:\xampp\htdocs\poonline\application\controllers\Vendors.php
        Line: 21
        Function: _error_handler

        File: C:\xampp\htdocs\poonline\index.php
        Line: 315
        Function: require_once

  41. Gusti Umaro

    Mau NANYA OMMM, itu button preview pake submit, jadi klo diklik data excelnya malah masuk ke database, solusinya gmna?

    • harusnya di nge-preview tanpa insert ke database om. coba perhatikan atribut action pada tag form nya. yg disini :
      <form method="post" action="<?php echo base_url("index.php/Siswa/form"); ?>" enctype="multipart/form-data">

      dia harus ngarah ke controller Siswa/form

  42. faizadie

    mas kalo import data excelnya tipenya csv sama xlxs bisa ga sekaligus?

  43. Fathiyah

    Mas kok saya blm bisa yg link importnya?
    Padahal database sdh terhubung. Bisa dibantu

  44. Julpiter

    Setelah di tes, batas masukkan data nya sekitar 2900 data, gimana ya cara ningkatinnya supaya unlimited ? Mohon bantuannya

    • Bisa aja dengan mengubah setting maximum_execute_time di php nya, dengan cara menambahkan skrip ini pada controller Siswa pada function import :
      set_time_limit(3600);

      simpan di paling atas setelah nama function. Silahkan ubah-ubah 3600 itu sesuai kebutuhan, itu satuannya detik.
      tapi saya tidak menyarankan hal ini karena akan membebani server nantinya, lebih baik batasi saja jumlah row sekali import nya om.

  45. Alul Ramadhan

    Terima kasih tutornya gan.
    Oh ya, kalau mau import dari excel versi 2003 apanya yang harus di ganti gan?

    • sama-sama om 😀
      Untuk import file excel 2003 (.xls), silahkan om ubah skrip berikut (pada function import dan function form di controller) :
      $excelreader = new PHPExcel_Reader_Excel2007();
      $loadexcel = $excelreader->load(‘excel/’.$this->filename.’.xlsx’);

      ubah jadi gini :
      $excelreader = new PHPExcel_Reader_Excel5();
      $loadexcel = $excelreader->load(‘excel/’.$this->filename.’.xls’);

      • Alul Ramadhan

        Wah fast response nih mantaaaapp.. (y)
        Tanya lagi nih gan, mumpung fast response xD..
        Itu kan hanya satu format file yang diperbolehkan ya (ex: format nya .xlsx aja), nah gmana kalo data excel saya ada yang formatnya (.xls dan .xlsx). biar ga rubah kodingan pada saat mau import data .xls maupun .xlsx, itu apa yang harus di ganti gan?

  46. Pino Prakoso

    Mas kalau muncul error : Message: Undefined property: Siswa::$SiswaModel
    Filename: controllers/Siswa.php

    sama

    Message: Call to a member function view() on null
    Filename: D:\Xampp\htdocs\import_excel_ci\application\controllers\Siswa.php

    Itu gimana ya? udah cek kesana kemari tapi ttep gak bisaa

    • coba saya mau lihat coding nya om. copy paste ke pastebin*com atau kirim file yang errornya via chat fans page fb kami om

  47. yudhiariawan

    om saya pas klik import kok not found yaa ?? tapi datanya mau tersimpan kedatabase. kasi solusi

    • coba cek skrip : redirect(“Siswa”);
      pada function importnya, apa benar redirectnya mengarah kesana?

  48. Khurum Nizar

    Tutorial Bagus, sangat bermanfaat. Tapi saya masih belum tau kenapa fungsi upload harus di taruh di model. padahal bisa di satu fungsi di controller biar lebih sederhana. karena fungsi model sendiri kan penghubung ke database. dan di form upload tidak terhubung ke database.

    • hehe memang ada benarnya lebih baik dipindahkan ke controller untuk fungsi upload_file nya. Karena model harusnya yang menyangkut soal database semua. Tapi balik lagi Kalau soal penempatan kodingnya ke masing-masing developernya.
      Terimakasih atas sarannya 🙂

  49. Ricky Julpiter Sipayung

    Gan, untuk keseluruhan udah work, cuman pas buat untuk tanggal/date, kenapa ya ke database malah terinput 0000-00-00, mohon bantuannya

  50. fadhlika

    Warning: POST Content-Length of 8894867 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

  51. fahriyan

    Mau tanya untuk import excel nya jika isinya ada images bisa gak ya?? dan jika bisa ada sampel atau cara nya gak ya.. terima kasih

  52. Wakid Anwar

    Bang kalo ingin menyesuaikan dengan database kita bagaimana ya ?

    • Coba baca dari awal sampai akhir om tutorialnya + praktekin, biar paham, kalo emang masih ada penjelasan saya di tutorial ini yang belum om pahami, bisa tanyakan ke saya

  53. amri maulana

    bang saya coba kodong d atas ko gak bisa ya malahan ada tulisan kaya gitu pas mau di preview nya
    mohon penjelasan nya bang

    “A problem was encountered while attempting to move the uploaded file to the final destination”

    • sorry om di tutorial saya ada yang kelewat pas di step 1. saya sudah tambahkan di STEP 1 nomor 2, harus bikin folder excel dulu om. coba cek lagi tutorialnya. sudah saya update

  54. arif munaji

    bang mau tanya, kan saya coba code abang diatas, kan kalau code abang diatas untuk masukkan 4 sheet aktif yaitu nis, nama, jenis kelamin, dan alamat yang akan masukkan ke array A, B, C, D. nah saya coba untuk membuat masukkan 5 sheet aktif yaitu nis, nama, jenis kelamin, alamat, dan umur. jadi sama tambah array menjadi A, B, C, D, E.
    $nis = $row[‘A’]; // Ambil data NIS
    $nama = $row[‘B’]; // Ambil data nama
    $jenis_kelamin = $row[‘C’]; // Ambil data jenis kelamin
    $alamat = $row[‘D’];
    $umur = $row[‘E’];
    tiba2 pada saat proses di form ada error Undefined index: E itu gmna mas? tolong pencerahannya

    • coba screenshot excel yang diimportnya sama code untuk import nya om, saya mau lihat dulu. kirim via fans page fb aja
      maaf baru balas

  55. melani tambun

    itu bisa di pakai ke datatables gk?

  56. Azka Muhammad

    saya nyoba mahami koding ini dan bingung di parsing nama inputan “file” di form.php baris ke-29, cara nge-post nya gimana? kenapa bisa langsung ada di SiswaModel baris ke 19

    • jawabannya ada pada Siswa.php (controller siswa) pada baris ke 22 om. disitu kan saya panggil fungsi upload_file yg ada di SiswaModel

  57. Adhik mulat

    gan saya udah otak atik seperti program saya yang diinginkan , tapi ketika diimport data gak masuk ke database nya gan . itu gimana ya gan ? btw saya juga menambahkan tanggal (date) . terima kasih

    • coba kirim kan file import.php nya dan screenshoot struktur tabelnya dan kirim via fans page kami om. biar saya bisa cek

  58. rayhandiansyah

    bang kalo mau ganti format excel 2007 jadi csv gimana?
    thanks sebelumnya

    • Rizaldi Maulidia Achmad

      maksudnya mau import dari file csv gitu?

  59. putrasatriaa

    Kalau mau mengimport 3 sheet yang berbeda ke 3 table yang berbeda gimana ya?

    • Rizaldi Maulidia Achmad

      harus paham dulu cara akses sheet berbeda di PHPExcel nya om. di dokumentasi PHPExcel ada caranya untuk akses sheet lain. silahkan baca om. link download dokumentasinya ada pada bagian Sumber & Referensi pada tutorial ini

  60. joopai123

    Script diatas apabila di implementasikan di CODEIGNITER versi 2.2.4 kira kira bisa work tidak ya kak?

    • Rizaldi Maulidia Achmad

      seharusnya bisa om. karena disini yang paling penting adalah plugin PHPExcelnya. dicoba saja. kalau ada error bisa tanya ke saya om

      • Difah_HC

        third_party\PHPExcel\PHPExcel.php): failed to open stream: No such file or directory

        maaf mas saya ada error di sini, petunjuk mas.. saya menggunakan Codeigniter 3.1.7

        • Rizaldi Maulidia Achmad

          sudah bisa belum om?

  61. Adieaja8

    gan saya sudah sukses import tapi untuk tanggal hasilnya di database masih angka gimana cara merubahnya ya supaya berubah format tanggal di SQL nya

    • Rizaldi Maulidia Achmad

      tipe data di database nya apa om?

  62. rerereka

    kak ini ga bisa di download ya…

    • Rizaldi Maulidia Achmad

      koneksi mungkin om. ini saya coba download bisa

  63. Boyooooo

    Kalo mau validasinya format tgl gimana gan?

    • Rizaldi Maulidia Achmad

      format tanggal. logic nya bisa dengan mengecek format nya. kan format standar nya yyyy-mm-dd
      jadi cek apakah memiliki “strip” 2 buah. jika valid, pecah tgl nya berdasarkan strip (gunakan explode). lalu cek per masing2 array hasil explode.

NOTE ARCHIVES