Senin, 14 Maret 2011

Impor File Excel (xls) dengan CodeIgniter dan library excel_reader

Import Excel Files (.xls) with CodeIgniter and Excel_reader Library.

Pertama-tama kita harus download library untuk membaca file excel (xls). Library yang saya gunakan adalah excel_reader yang saya dapat di  google. Simpan file tersebut dalam folder %CI_Root%\system\application\libraries.

Selanjutnya jangan lupa untuk men-setting konfigurasi umum dari CodeIgniter.
Buat controller dengan nama contoh.php
class Contoh extends Controller {
  function Contoh(){
    parent::Controller(); 
    $this->load->helper('form'); // untuk menangani proses form 
  }

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

  function read_file(){
    include_once ( APPPATH."libraries/excel_reader2.php");
    $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
       
    $j = -1;
    for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){ 
      $j++;
      $nama[$j]   = $data->val($i, 1);
      $nim[$j]    = $data->val($i, 2);
      $kelas[$j]  = $data->val($i, 3);
    }
    
    $xdata['nama']  = $nama;
    $xdata['nim']  = $nim;
    $xdata['kelas']  = $kelas;
    $this->load->view('message_import_file_excel', $xdata);
  }
}
Penjelasan :
Fungsi index() adalah fungsi yang pertama kali dijalankan saat controller contoh dipanggil.
Fungsi read_file() adalah fungsi untuk membaca data yang ada dalam file excel (xls)

Selanjutnya kita buat file di view. Ada 2 file yang harus dibuat, yaitu import_file_excel.php dan message_import_file_excel.php
untuk import_file_excel.php file ini ditujukan untuk tampilan untuk mengimpor file.
<html>
<head>
</head>
<body>
  <br>
  Contoh untuk import excel
  <?php echo form_open('contoh/read_file');?>
        echo form_fieldset('IMPORT FILE PO'); ?> 
  <table>
    <tr>  
      <td>Upload file (*.xls) : </td>  
      <td><input name="userfile" type="file"></td>
      <td><input name="upload" type="submit" value="import"></td>
    </tr>
  </table>
  <?php echo form_fieldset_close();
        echo form_close();?>
</body>
</html>

untuk file message_import_file_excel.php ditujukan untuk menampilkan data yang telah diimpor dari file excel
<html>
<head></head>
<body>
  <table border="1">
    <tr>
      <th>Nama</th>
      <th>Kelas</th>
      <th>Nim</th>
    </tr>
    <?php $i = 0;
          while($i < count($nama)):?>
    <tr>
      <td><?php echo $nama[$i]?></td>
      <td><?php echo $nim[$i]?></td>
      <td><?php echo $kelas[$i]?></td>
    </tr>
      
    <?php $i++; endwhile;?>
  </table>
</body>
</html>

Nah, aplikasi sederhana untuk membaca file excel telah berhasil dibuat. Untuk contoh tamplate data di file excel dapat mengikuti seperti ini

NB :
- kode ini sudah di implementasikan di CI 1.7.3 dan berhasil. Untuk penggunaan di CI 2.0.x, kode bisa sedikit diedit  pada class controller sesuai dengan standar penulisan di CI 2.0.x.

Demikian dulu pengenalan Framework PHP Codeigniter untuk bagian Impor File Excel (xls) dengan CodeIgniter dan library excel_reader... ^_^

Keyword : impot file excel, excel_reader, CodeIgniter

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi   : CodeIgniter User Guide
Author       : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

70 komentar:

  1. mas,saya mau nanya kalau ekspor excel ke mysql dengan CI bisa gak ya mas,.

    BalasHapus
  2. mas,kl ekspor dari excel ke mysql dengan ci bagaimana ya mas caranya?

    BalasHapus
  3. Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.

    kira2 knp tuh bos??? kq gak bisa kebaca.

    BalasHapus
  4. @Faris : mf baru balas, klo untuk ekspor excel k mysql pake proses di atas juga bisa, tapi datanya jgn langsung d tampilkan d view, melainkan dilakukan query dulu ke database mysql untuk insert.

    @david: coba d detailkan erornya...

    BalasHapus
  5. Permisi, numpang komentar..

    "Simpan file tersebut dalam folder %CI_Root%\system\application\libraries."
    Setau saya apabila kita ingin menambahkan library ke dalam CI, dapat dilakukan dengan meletakkan nya di dalam application/libraries..
    dengan begitu baris perintah "include_once ( APPPATH."libraries/excel_reader2.php"); " dapat diganti dengan
    $this->load->library("excel_reader2");

    dan menurut saya, konsep penggunaan CI menjadi semakin benar..
    thanks...
    Nice Post.. :)

    BalasHapus
    Balasan
    1. ok... thanks saudara BSi telah mengoreksi artikel ini ^_^

      Hapus
  6. mas, saya mau tanya kenapa dengan script yang sama tetapi ketika dijalankan muncul pesan error seperti ini?

    A PHP Error was encountered
    Severity: 8192
    Message: Assigning the return value of new by reference is deprecated
    Filename: libraries/excel_reader2.php
    Line Number: 916

    A PHP Error was encountered
    Severity: Warning
    Message: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\coba\application\libraries\excel_reader2.php:916)
    Filename: core/Common.php
    Line Number: 442

    An Error Was Encountered
    Non-existent class: Excel_reader2

    saya menggunakan CI versi 2.0.3
    mohon bantuannya..

    BalasHapus
    Balasan
    1. coba sodara tunjukkan controller yg sodara buat, saya menggunakan CI 1.7. jadi ada kemungkinan terdapat fungsi tidak dipakai lagi.

      Hapus
  7. saya sama kendalanya sama mas hermawan...controller yang saya punya :
    function convert(){
    $this->load->library("excel_reader2");
    $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
    $j = -1;
    for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){
    $j++;
    $nama[$j] = $data->val($i, 1);
    $nim[$j] = $data->val($i, 2);
    $kelas[$j] = $data->val($i, 3);
    }
    $xdata['nama'] = $nama;
    $xdata['nim'] = $nim;
    $xdata['kelas'] = $kelas;
    $this->load->view('gaweng', $xdata);
    }

    saya pake codeigniter 2.1.0

    BalasHapus
    Balasan
    1. untuk baris 916 pada excel_reader2.php, hilangkan tanda &
      pada $this->_ole =& new OLERead();

      dan juga ganti fungsi split() pada excel_reader menjadi explode()

      semoga membantu....

      Hapus
  8. Halu mas, saya jg pake CI 1.7.3
    tp ada message eror spt ini :
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined index: userfile
    Filename: controllers/contoh.php
    Line Number: 15
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined offset: 0
    Filename: libraries/excel_reader2.php
    Line Number: 390
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: nama
    Filename: controllers/contoh.php
    Line Number: 25
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: nim
    Filename: controllers/contoh.php
    Line Number: 26
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: kelas
    Filename: controllers/contoh.php
    Line Number: 27


    mhn bantuannya mas

    BalasHapus
    Balasan
    1. coba cek field input untuk file, apakah namanya 'userfile' atau tidak.
      < input name="userfile" type="file">

      selanjutnya definisikan variabel $nama, $nim, $kelas di atas sendiri dalam fungsi read_file
      function read_file(){
      $nama = $nim = $kelas = array();
      ...
      }

      Hapus
  9. mas nanya ya,, kalo data yang dimasukkan ada yang berupa foreign key gmn?

    BalasHapus
    Balasan
    1. bisa saja, asal data (foreignkey) yang disimpan di excel dan di import ke web harus sama dengan data (foreignkey) yang ada pada database

      Hapus
  10. thank ya .. berjalan sukses di CI 2.1 :D

    BalasHapus
    Balasan
    1. sama-sama...

      wah dah dicoba di CI 2.1 ya... aku saja belum.. XD

      Hapus
  11. saya ada masalah di sini mas =

    An Error Was Encountered

    Non-existent class: Excel_reader2

    untuk controller saya =

    load->helper('form'); // untuk menangani proses form

    }

    function index() {
    $this->load->view('contoh/import_file_excel');
    }

    function read_file(){
    $this->load->library("excel_reader2");

    //include_once ( APPPATH."libraries/excel_reader2.php");
    $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);

    $j = -1;
    for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){
    $j++;
    $nama[$j] = $data->val($i, 1);
    $nim[$j] = $data->val($i, 2);
    $kelas[$j] = $data->val($i, 3);
    }

    $xdata['nama'] = $nama;
    $xdata['nim'] = $nim;
    $xdata['kelas'] = $kelas;
    $this->load->view('contoh/message_import_file_excel', $xdata);
    }
    }
    ?>

    BalasHapus
    Balasan
    1. coba untuk $this->load->library("excel_reader2"); di kommen aja

      pake yg include_once ( APPPATH."libraries/excel_reader2.php");

      jadi

      //$this->load->library("excel_reader2");
      include_once ( APPPATH."libraries/excel_reader2.php");

      hal ini karena (berdasarkan pengalaman coba2 saya) CI menganggap excel_reader adalah suatu class tunggal dan nama classnya adl excel_reader2, akan tetapi dalam excel_reader itu terdapat beberapa class dan tidak ada class dg nama excel_reader2...

      semoga membantu ^_^

      Hapus
    2. hmmmm... mas bsa kirimin file excel_reader2.php yg mas gunakan?

      Hapus
    3. sama persis sama yg di code.google.com, g ada yg saya ganti2 kok. ^_^

      Hapus
  12. huehehhehe,,, makasih mas dah di bls terus, ini td dah saya coba lagi, eh yg keluar skr masalah nya sama kaya mas yan, yaitu :

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined index: userfile
    Filename: controllers/contoh.php
    Line Number: 15
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined offset: 0
    Filename: libraries/excel_reader2.php
    Line Number: 390
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: nama
    Filename: controllers/contoh.php
    Line Number: 25
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: nim
    Filename: controllers/contoh.php
    Line Number: 26
    A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: kelas
    Filename: controllers/contoh.php
    Line Number: 27

    itu knp yah mas?

    BalasHapus
    Balasan
    1. coba cek dulu nama yang ada di view ( <input name="userfile" ... )
      sudah sama kah dengan yg d controller
      $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);

      Hapus
  13. sudah sama mas, tapi tetep kaya gitu eror nya :((

    BalasHapus
    Balasan
    1. oh.. klo error coba cek dulu apakah filenya terupload dan bisa dibaca...

      coba cara uploadnya pakai library uploadnya codeigniter...

      Hapus
  14. Anak-anaku kalian terlebih dahulu harus mengedit file excel_reader2.php sesuai dengan prototipe CI versi yang digunakan, versi berapapun saya coba jalan yang penting file excel_reader2 harus diedit sesuai dengan prototipe CI yang Anda gunakan
    lihat disini http://codeigniter.com/user_guide/general/creating_libraries.html

    simpan di .../aplication/library/

    coba pake upload library ci

    kurang lebih seperti ini

    ...
    ..
    .
    function do_ipload() {
    $temp = realpath(APPPATH . 'temp_upload');
    $config = array(
    'allowed_types' => 'xls|xlsx',
    'upload_path' => $temp,
    //'file_name' => 'sample.xls',
    'max_size' => 2000
    );

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

    if (!$this->upload->do_upload()) {
    $data = array('error' => $this->upload->display_errors());
    $this->data['data_excel'] = $data;
    $this->load->view('gis/excel_data_view', $this->data);

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

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

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

    // Sheet 1
    $data = $this->excel_reader2->sheets[1];
    $dataexcel = Array();
    for ($i = 1; $i <= $data['numRows']; $i++) {
    if ($data['cells'][$i][1] == '')
    break;
    $dataexcel['nama'] = $data['cells'][$i][1];
    $dataexcel['alamat'] = $data['cells'][$i][2];
    }




    $this->data['data_excel'] = $dataexcel;
    $this->load->view('gis/excel_data_view', $this->data);
    }

    BalasHapus
  15. oh ya rubah juga file import_file_excel.php diatas pada baris

    menjadi

    BalasHapus
  16. terima kasih mas..
    sudah tidak ada yang error, semuanya lancar :)

    BalasHapus
  17. pak, saya menemukan ini

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined variable: tmp
    Filename: libraries/Excel_reader2.php
    Line Number: 812

    itu kenapa ya? apa yg perlu dirubah di excel_reader2.php ?
    saya menggunakan CI versi 2.1.0

    BalasHapus
    Balasan
    1. maaf baru bls, lama g OL...
      ada kemungkinan file excelnya g kebaca...

      coba d debug dulu...

      Hapus
  18. mas, kalau langsung insert database gimana script insertnya?
    mohon pencerahannya

    BalasHapus
    Balasan
    1. bisa langsung insert datanya...
      pas dalam looping "for" lakukan proses insert ke database...
      for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){
      $j++;
      // insert ke database lewat model
      }

      Hapus
  19. Fatal error: require(): Cannot redeclare class ci_exceptions in /var/www/html/Code/system/codeigniter/Common.php on line 127

    Ini kenapa ya mas?
    Saya pake yang versi 1.7

    BalasHapus
    Balasan
    1. maaf baru balas, lg sibuk kerja...
      wah coba saya cek controllernya, kemungkinan ada kesalahan d controller yg menyebabkan seperti itu...

      Hapus
  20. Code Igniter Version 2.1.3
    ==========================
    Controller:

    class Contoh extends CI_Controller {

    function __construct()
    {
    parent::__construct();

    }


    function index() {
    $this->load->helper('form');
    $this->load->view('import_file_excel');
    }


    function read_file(){
    include_once ( APPPATH."libraries/excel_reader2.php");
    $excel_file = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);

    $j = -1;
    for ($i=2; $i <= ($excel_file->rowcount($sheet_index=0)); $i++){
    $j++;
    $nama[$j] = $excel_file->val($i, 1);
    $nim[$j] = $excel_file->val($i, 2);
    $kelas[$j] = $excel_file->val($i, 3);
    }

    $data['nama'] = $nama;
    $data['nim'] = $nim;
    $data['kelas'] = $kelas;

    $this->load->view('message_import_file_excel', $data);
    }

    }

    View:

    Change this "form_open" to "form_open_multipart"

    BalasHapus

  21. A PHP Error was encountered

    Severity: Warning

    Message: include_once(C:\xampp\htdocs\PA2/system/application/libraries/excel_reader2.php): failed to open stream: No such file or directory

    Filename: controllers/contoh.php

    Line Number: 20

    -----------------------------------

    A PHP Error was encountered

    Severity: Warning

    Message: include_once(): Failed opening 'C:\xampp\htdocs\PA2/system/application/libraries/excel_reader2.php' for inclusion (include_path='.;C:\xampp\php\PEAR')

    Filename: controllers/contoh.php

    Line Number: 20

    -----------------------------------
    Fatal error: Class 'Spreadsheet_Excel_Reader' not found in C:\xampp\htdocs\PA2\system\application\controllers\contoh.php on line 21

    kalo bole tau itu kenapa ya mas ??

    BalasHapus
    Balasan
    1. itu library excel_reader2.php nya tidak ada di folder library...

      klo bisa jangan d load via CI ($this->load->library()), tp pake
      include_once ( APPPATH."libraries/excel_reader2.php");

      trus edit file excel_reader2.php seperti di sini

      Hapus
  22. pak saya pakai CI 1.7.2

    saya menemukan error seperti ini

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined index: userfile
    Filename: controllers/contoh.php
    Line Number: 22

    Padahal nama userfile di input type dan di controller sudah sama.

    kemudian yang ini lagi

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined offset: 0
    Filename: libraries/excel_reader2.php
    Line Number: 390

    mohon pencerahannya pak

    BalasHapus
    Balasan
    1. di view untuk form_open('contoh/read_file');
      ganti dengan form_open_multipart('contoh/read_file');

      setelah itu, coba sebelum code
      $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);

      pada controller, u kasih pengecekan terhadap upload file nya, seperti

      echo '<pre>';
      print_r($_FILES);
      die;

      jika web tidak menampilkan data ttg file yg telah d upload,maka uploadnya gagal...
      silakan d coba dulu...
      kalo sudah berhasil, 3 baris kode di atas dihapus lagi...

      moga membantu

      Hapus
  23. misi mas.. saya memakai CI 1.7.2,
    sya menemukan error seperti ini.

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined index: userfile
    Filename: controllers/contoh.php
    Line Number: 22

    padahal userfile yang di view dan di controller sudah sama

    dan 1 lagi..

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined offset: 0
    Filename: libraries/excel_reader2.php
    Line Number: 390

    mohon bantuan'a mas

    BalasHapus
  24. maaf mau tanya, pengaturan koneksi database agar data excel yang diupload otomatis tersimpan di database gmn ya caranya?
    mohon pencerahannya, trima kasih :)

    BalasHapus
    Balasan
    1. maksudnya ini file excelnya yg masuk kedalam database atau hanya datanya saja?
      klo filenya jg masuk dalam database harus ada field tambahan untuk menampung sebuah file...

      Hapus
    2. hanya datanya saja Pak..
      saya pake postgre, ketika diupload muncul pesan error gini

      A PHP Error was encountered
      Severity: Warning
      Message: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not translate host name "postgre" to address: No host data of that type was found
      Filename: controllers/form.php
      Line Number: 65

      apa mungkin penulisan koneksi saya salah?
      ini yang saya tulis di program saya
      line 65 : pg_connect("postgre", "postgres", "password");
      line 66 : pg_select_db("database1");

      Hapus
    3. bukan postgre, defaultnya "localhost"

      hm, tp kok aneh ya... itu koneksi k databasenya d controller CI ya?

      coba baca yg ini http://zawaruddin.blogspot.com/2011/03/pengenalan-framework-php-codeigniter.html

      Hapus
  25. sudah berhasil tampilkan data...dan saya pengin insert ke database, gimana carnya ya? (baru)

    BalasHapus
    Balasan
    1. bisa d hapus dan d ganti code untuk insert pada code setelah looping data d excelnya...

      contoh
      for ($i=2; $i <= ($excel_file->rowcount($sheet_index=0)); $i++){
      $j++;
      $nama[$j] = $excel_file->val($i, 1);
      $nim[$j] = $excel_file->val($i, 2);
      $kelas[$j] = $excel_file->val($i, 3);
      }

      bisa d ganti
      for ($i=2; $i <= ($excel_file->rowcount($sheet_index=0)); $i++){
      $this->db->insert('tabel', array('kolom1' => $excel_file->val($i, 1), 'kolom2' => $excel_file->val($i, 2)));
      }

      untuk code insert ke database saya anjurkan ditaruh model aja, yg di atas hanya contoh... :)

      Hapus
  26. Thanks Article nya, bantu kerjaan saya. Makasi banyaak.

    BalasHapus
  27. mau nanya pak
    import sudah bisa, tapi nggak masuk database

    waktu di model saya tambah

    "
    function tambahuser($data)
    {
    for ($i=2; $i <= ($excel_file->rowcount($sheet_index=0)); $i++){
    $this->db->insert('siswa', array('id' => $data->val($i, 1), 'nama_siswa' => $data->val($i, 2),
    'alamat_siswa' => $data->val($i, 3), 'nomor_hp' => $data->val($i, 4)));
    }
    }
    "

    malah keluar error
    A PHP Error was encountered

    Severity: Notice

    Message: Undefined variable: excel_file

    Filename: models/User_model.php

    Line Number: 9

    itu kenapa ya pak?

    BalasHapus
    Balasan
    1. pada baris ini
      for ($i=2; $i <= ($excel_file->rowcount($sheet_index=0)); $i++),
      coba ganti $excel_file dengan $data....

      Hapus
    2. keluar error begini pak:

      Error Number: 1054
      Unknown column 'Array' in 'field list'
      INSERT INTO `siswa` (`id`, `nama_siswa`, `alamat_siswa`, `nomor_hp`) VALUES (Array, Array, Array, Array)
      Filename: C:\xampp\htdocs\tugassiswa\system\database\DB_driver.php
      Line Number: 330

      bgmna pak?

      Hapus
    3. coba pake cara yg ini, mf baru bls... lg sibuk.. hehe

      //controller
      function read_file(){
      include_once ( APPPATH."libraries/excel_reader2.php");
      $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);

      $query = array();
      for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){
      $query[] = array( 'id' => $data->val($i, 1),
      'nama_siswa' => $data->val($i, 2),
      'alamat_siswa' => $data->val($i, 3),
      'nomor_hp' => $data->val($i, 4));
      }

      $this->model->tambahuser($query);
      }

      // model
      function tambahuser($data){
      $this->db->insert_batch('siswa', $data);
      }

      Hapus
  28. help agan2.. kalo data file excel nya seperti ini "01/02/2014 00:06:13 93236277" perintah untuk explode/ dipecah2 nya gimana ya?

    BalasHapus
    Balasan
    1. kayak gini gan...
      explode('/', "01/02/2014 00:06:13 93236277");

      cek d mari http://php.net/manual/en/function.explode.php

      Hapus
    2. naro perintah explode nya di mana ya mas?
      kalo coding nya seperti ini.. mohon pencerahannya :)

      include_once (APPPATH."libraries/excel_reader2.php");
      $cell = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
      $baris = $cell->rowcount($sheet_index=0);

      $sukses = 0;
      $gagal = 0;

      for ($i=2; $i <=($baris); $i++){{
      $insert = array ('tanggal' => $cell->val($i,1),
      'jam' => $cell->val($i,2),
      'nik' => $cell->val($i,3),
      );

      $this->muploaddata->tambahuser($insert);

      if ($insert) $sukses++;
      else $gagal++;
      }

      $data['sukses'] = $sukses;
      $data['gagal'] = $gagal;

      Hapus
    3. maaf baru bls.... jarang buka blog hehe
      ya tanggal yg mau d pecah berada pada kolom berapa di excel?
      contoh klo ada d kolom 1

      for ($i=2; $i <=($baris); $i++){
      $tgl = explode(' ', $cell->val($i,1));
      $insert = array ('tanggal' => $tgl[0],
      'jam' => $tgl[1],
      'nik' => $tgl[2]);
      }
      'jam' => $cell->val($i,2),
      'nik' => $cell->val($i,3),
      );

      Hapus
  29. mas cara diatas bisa import file excel dengan format xlsx ngga mas ? soalnya saya coba file itu tidak bisa mas.. mohon pencerahan mas

    BalasHapus
    Balasan
    1. wah ndak bisa mas, coba baca ini
      https://code.google.com/p/php-excel-reader/wiki/Documentation

      klo ingin bisa import ke xlsx ane rekomendasiin ini http://phpexcel.codeplex.com/

      Hapus
  30. mas templatenya web sampean ini pake apa ya?? :-)

    BalasHapus
  31. mas aku import data tanggal di excel yyyy/mm/dd tp di sql pembacaannya kok 0000-00-00 , mohon pencerahannya

    BalasHapus
    Balasan
    1. maksudnya dari excel formatnya yyyy/mm/dd tp pas dimasukkan ke db jadinya 0000-00-00 kah?

      klo iya, secara default input date yg diketahui db adalah format yyyy-mm-dd
      jadi ubah dulu format yyyy/mm/dd jadi yyyy-mm-dd

      ada 3 opsi
      1. tambahkan fungsi STR_TO_DATE dalam query
      INSERT INTO tabel (tanggal) VALUES (STR_TO_DATE('$tanggal', '%Y/%m/%d'));
      dimana $tanggal -> variabel tgl dari excel, dan '%Y/%m/%d' adalah bentuk format tanggalnya (yyyy/mm/dd).
      2. sebelum diinsert ke database data tanggal dari excel di ganti pakai str_replace.
      $tanggal = str_replace("/", '-', $tanggal);
      3. ganti format penulisan tanggal di excel dari yyyy/mm/dd ke yyyy-mm-dd

      Hapus
  32. mas minta tolong. saya ada yang error seperti ini:

    A PHP Error was encountered
    Severity: 8192
    Message: Assigning the return value of new by reference is deprecated
    Filename: libraries/excel_reader2.php
    Line Number: 916

    An Error Was Encountered
    Non-existent class: Excel_reader2

    saya menggunaka CI 2.2.1 dan excel_reader 2.21
    tolong bantuannya, terima kasih

    BalasHapus
    Balasan
    1. buka file excel_reader2.php nya, trus edit pada baris 916.
      Buang tanda "&" nya jadi

      $this->_ole = new OLERead();

      Hapus
    2. masih keluar error seperti ini mas

      Non-existent class: Excel_reader

      Hapus
    3. coba pakai yg saya contohkan dulu
      include_once ( APPPATH."libraries/excel_reader2.php");

      jangan d load via library nya CI.

      Hapus
  33. ini controller saya mas.

    function read_file(){
    $this->load->library('excel_reader2');
    $data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);

    $j = -1;
    for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){
    $j++;
    $nama[$j] = $data->val($i, 1);
    $nim[$j] = $data->val($i, 2);
    $kelas[$j] = $data->val($i, 3);
    }

    $xdata['nama'] = $nama;
    $xdata['nim'] = $nim;
    $xdata['kelas'] = $kelas;
    $this->load->view('message_import_file_excel', $xdata);
    }

    BalasHapus
  34. mas kalau penulisan menggunakan extension mysqli terutama di saat penulisan query insert data itu gimanaya...?mohon petunjuk

    BalasHapus
    Balasan
    1. untuk CI terbaru set default drivernya sudah mysqli

      untuk insert bisa pake query builder $this->db->insert();

      Hapus
  35. maas saya pakai php ci 3
    responnya kalau import .xlsx file does not exist
    kurangnya apa ya?

    public function impor_desainer($id_elemen) {
    cek_login();
    $this->load->view('konek');
    $db = new mysqli(db_host, db_user, db_pass, db_name);
    $nama = date('His');

    mysqli_query($db, "DELETE FROM database_elemen WHERE id_dda='$id_elemen'");


    $fileName = time().$_FILES['dokumen']['name'];

    $config['upload_path'] = 'uploads/dokumen/impor/';
    $config['file_name'] = $nama.'.xlsx';
    $config['max_size'] = '2048';
    $config['overwrite'] = true;
    $config['allowed_types'] = 'xlsx';

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

    if(! $this->upload->do_upload('dokumen') )
    $this->upload->display_errors();

    $media = $this->upload->data('dokumen');
    $inputFileName = 'uploads/dokumen/impor/'.$nama.'.xlsx';

    try {
    $inputFileType = IOFactory::identify($inputFileName);
    $objReader = 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++) {
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
    $data = array(
    "kode1"=> $rowData[0][0],
    "kode2"=> $rowData[0][1],
    "kode3"=> $rowData[0][2],
    "kode4"=> $rowData[0][3],
    "kode5"=> $rowData[0][4],
    "kode6"=> $rowData[0][5],
    "kode7"=> $rowData[0][6],
    "urutan"=> $rowData[0][7],
    "teks"=> $rowData[0][8],
    "satuan"=> $rowData[0][9],
    "tampil"=> $rowData[0][10],
    "tampil_dataku"=> $rowData[0][11]
    );

    $impor_id_dda = $id_elemen;
    $impor_kode1 = $data['kode1'];
    $impor_kode2 = $data['kode2'];
    $impor_kode3 = $data['kode3'];
    $impor_kode4 = $data['kode4'];
    $impor_kode5 = $data['kode5'];
    $impor_kode6 = $data['kode6'];
    $impor_kode7 = $data['kode7'];
    $impor_urutan = $data['urutan'];
    $impor_teks = $data['teks'];
    $impor_satuan = $data['satuan'];
    $impor_tampil = $data['tampil'];
    $impor_tampil_dataku = $data['tampil_dataku'];
    $impor_create_at = date('Y-m-d H:i:s');
    $impor_update_at = '0000-00-00 00:00:00';

    mysqli_query($db, "INSERT INTO database_elemen SET id='', id_dda='$impor_id_dda', kode1='$impor_kode1', kode2='$impor_kode2', kode3='$impor_kode3', kode4='$impor_kode4', kode5='$impor_kode5', kode6='$impor_kode6', kode7='$impor_kode7', urutan='$impor_urutan', teks='$impor_teks', satuan='$impor_satuan', tampil='$impor_tampil', tampil_dataku='$impor_tampil_dataku', create_at='$impor_create_at', update_at='$impor_update_at'");
    }

    redirect(site_url('dda_dua/row_desainer/'.$id_elemen));
    }


    terimakasih

    BalasHapus