Jika kalian seorang pengembang website atau lebih kerennya sering disebut web developer mungkin akan membutuhkan suatu cara untuk mengimport data kedalam database dalam jumlah bnyak karena ini sangat penting jika project anda membangun suatu sistem untuk mengolah data,
tidak mungkin anda harus insert data satu per satu jika data tersebut ada ribuan kebayangkan bagaimana capeknya. Saat ini setiap perusahaan sudah terkomputerisasi jadi data yang tadi nya Hard copy sekarang sudah banyak diolah menjadi Soft copy dalam format Excel atau yang lainnya guna untuk mempermudah dalam mencari data sehingga tidak takut untuk hilang atau rusak. Untuk membuat Import data Excel ke database maka kita membutuhkan library yang bernama PHPExcel untuk lebih lanjut mari kita buat project nya.
Bahan yang diperlukan
- Framework Codeigniter
- Library PHPExcel
- Untuk pengatruran PHPEXCEL pada codeigniter disini
1. Set Framework Codeigniter sesuai selera, buat lah suatu database dengan format tabel seperti berikut.
CREATE TABLE IF NOT EXISTS `tbimport` (
`No` int(5) NOT NULL AUTO_INCREMENT,
`NamaKaryawan` varchar(50) NOT NULL,
`Alamat` varchar(150) NOT NULL,
`Posisi` varchar(150) NOT NULL,
`status` varchar(50) NOT NULL,
PRIMARY KEY (`No`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
2. Extract library PHPExcel copy folder PHPExcel dan PHPExcel.php pada folder Classes simpan pada htdocs/Project/application/libraries/.
3. Buatlah satu buah file excel sebagai sample.
4. Buat lah folder dengan nama upload pada root directory untuk menyimpan file upload.
5. Sekarang tahap koding buatlah sebuah controller dengan nama import.php dengan class import
class Import extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->library(array('PHPExcel','PHPExcel/IOFactory'));
}
public function index() {
$this->load->view('v_import');
}
public function upload(){
$fileName = $this->input->post('file', TRUE);
$config['upload_path'] = './upload/';
$config['file_name'] = $fileName;
$config['allowed_types'] = 'xls|xlsx|csv|ods|ots';
$config['max_size'] = 10000;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('file')) {
$error = array('error' => $this->upload->display_errors());
$this->session->set_flashdata('msg','Ada kesalah dalam upload');
redirect('Welcome');
} else {
$media = $this->upload->data();
$inputFileName = 'upload/'.$media['file_name'];
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(
"No"=> $rowData[0][0],
"NamaKaryawan"=> $rowData[0][1],
"Alamat"=> $rowData[0][2],
"Posisi"=> $rowData[0][3],
"Status"=> $rowData[0][4]
);
$this->db->insert("tbimport",$data);
}
$this->session->set_flashdata('msg','Berhasil upload ...!!');
redirect('Import');
}
}
}
6. Buatlah file pada folder view dengan nama file v_import.php
<div style="margin-top: 20px;">
</div>
<form action="<?php echo base_url();?>import/upload/" enctype="multipart/form-data" method="post">
<input name="file" type="file" />
<input type="submit" value="Import File" />
</form>
<?php echo $this->session->flashdata('msg'); ?>
jika berhasil maka data akan tersimpan dalam database mysql jika tidak ada atau error check kembali pengaturan codeigniter dan perhatikan script, so belajar jangan asal copas tapi pahami dan resapi.
Semoga bermanfaat.
gan, ini pakai CI versi brapa?
BalasHapussaya pakai CI 3 muncul trs notice ini :
An Error Was Encountered
Non-existent class: IOFactory
saya pkai PHPExcel 1.8
jika agan pake 1.8.0
Hapuscoba diganti
pada script ini
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
PHPExcel_IOFactory
udh saya ganti gan bagian $inputFileType sma $objReader. tpi masih sama gan.
HapusNon-existent class: IOFactory
agan pakai PHPExcel versi brpa?
saya pake PHPExcel v.1.8.0 gan sama saya pake CI v.2 dan v.3 work semua.
Hapuscoba gan ikutin ana
1. pada controller
ganti dengan ini.
$inputFileType = IOFactory::identify($inputFileName);
$objReader = IOFactory::createReader($inputFileType);
2. pada library PHPExcel/IOFactory.php pada line 45 kalo di ane. cari
class PHPExcel_IOFactory
ganti dengan
class IOFactory
3. Masih di folder dan file yang sama PHPExcel/IOFactory.php pada line 80 cari
private function __construct() { }
ganti dengan
public function __construct() { }
silahkan dicobakan kalo masih error comment lagi
udah saya ikutin semua sarannya gan,
Hapusada lgi notice :
Severity: Warning
Message: file_get_contents(./datafile/): failed to open stream: No such file or directory
Filename: Shared/OLERead.php
Line Number: 85
tapi file excel yang saya upload berhasil ke upload gan, cuma gak ke simpan datanya ke db. saya tambahin base_url(). pada path nya.
$inputFileName = base_url().'./datafile/'.$media['file_name'];
tapi malah ada notice baru.
Error loading file "datafile": Could not open http://localhost/elektro/./datafile/ for reading! File does not exist.
makasih banyak gan sebelumnya udah mau ngabantu.
kalo di file ./datafile/ ada folder yang berhasil di upload, coba ganti
Hapus$inputFileName = base_url().'datafile/'.$media['file_name'];
gan, msih error yang sama. baik pakai base_url() ataupun gk.
Hapusyg di file controller udh saya ikutin semua saran agan
tpi msih blum bsa.
boleh minta emailnya gan?
gan dah fix problem nya...saya dah kirim email
Hapusgan, error saya sama kek diatas awalnya..
Hapusterus ngikutin cara diatas juga, habis ditambahin base_url().
error nya cuman tinggal :
Error loading file "soal": Could not open http://localhost/codeigniter/assets/soal for reading! File does not exist.
harus digimanain lagi gan ?
Boleh minta emailnya ?
Terimakasih sebelumnya
sudah dikirim gan
Hapusmaaf salah email kirim ke irwan.develop@gmail.com agar saya bisa bantu menyelesaikan masalah anda
Hapusoke sudah dikirim ulang gan
Hapusgagal tadi rupanya gan, sudah dikirim ulang gan
Hapusproblemnya dimana tuh bang...
BalasHapusane sama kaya gitu
coba gan pake controller upload pada script di atas yang sudah di update, masalah sebelumnya hanya tidak ada perintah eksekusi jika kondisi terpenuhi.
Hapusmasih sama bang
Hapuspesan error nya apa gan? coba ikutin tutor dari awal
Hapusmakasih gan, di saya sudah jalan.. :D
BalasHapussiip gan
Hapusbang alvi, bagi filenya dong bang, saya nyobaiin belum bisa bang..
Hapuschairil.one20@gmail.com (kirim ya bang)
thx...
gan saya pake konsep HMVC CI nya. versi 3 dan PHPExcelnya versi 1.8 error pada $session
BalasHapusseharusnya gak ada masalah meskipun menggunakan HMVC, pesan detail error nya kayak gimana gan?
Hapusmin, minta bantuannya, saya sudah coba project.nya, lancar,
BalasHapustapi setelah saya tekan tombol import langsung masuk ke halaman "about:blank" tidak tampil apapun, dan data tidak masuk, itu kenapa ya? mohon bantuannya
sekalian mau tanya, fungsi dari $this->session->flashdata itu pa ya?? soallnya saat d run memunculkan error, dan saat saya hapus tdk eror,., mohon penjelasannya bang admin
Hapus1. jika setelah tekan tombol import database masuk ke mysql namun halaman masuk ke "about:blank" berarti kemungkinan masalah ada pada `redirect('Welcome');` dimana setelah eksekusi import alamat tidak sesuai untuk didirect, anda tinggal mengganti 'welcome' sesuai controllers yang anda buat mengalihkan page anda sesuai function controllers..
Hapus2. $this->session->flashdata pada tutor ini untuk menampilkan pesan text setelah eksekusi , namun bisa digunakan untuk yang lain. jika terjadi error coba check apakah librrary session sudah anda tampilkan `$this->load->library('session');` atau bisa anda load pada /application/config/autoload.php pada `$autoload['libraries']`
makasih atas jawabanya,
Hapusini masalhnya masuk ke "about:blank" tetapi datanya tidak masuk ke database min,., kira2 apa ya?
ada pesan error gak gan? apa hanya blank saja saat di tekan submit import? sudah coba load herlper `url` , ` form`?
Hapustidak ada pesan error sama sekali, hanya blank page saja,
Hapussaya sudah ikuti sesuai tutorial,
di autoloader sudah saya beri helper=array('url') gan, atau mungkin bisa saya kirim ke email agan?? soalnya saya butuh sekali project ini.. trimakasih sebelumnya
kalo helper.nya saya ganti menjadi helper:array('form'), jadi error gan,
Hapusatau saya salah peletakan file?
saya meletakan file di codeigniter/upload/import.xlsx
dan controller saya letakkan di codeigniter/application/controller/import.php
kirim aja gan lewat email.. controller, model ama views, satu project nya jg gpp
Hapusalamat emailnya yg mana gan,., saya blm tau..
Hapusmkasih sebelumnya
mkasih gan, Alhamdulillah berjalan lancar
Hapussama satu lagi gan, saya ada project mengalami problem berkaitan dengan PHPExcel, bisakan agan membantu?
cek email ya gan, trimakasih sebelumnya
Alhamdulilah kalo dah bisa, boleh kirim saja...
Hapusgan kok punya ane eror "An Error Was Encountered" bisa di bantu ?
BalasHapuscoba check lagi gan tambahin library ama helper yang belum diload.
HapusGan, Mohon petunjukknya kalau error seperti ini gimana yah solusinya. thanks
BalasHapusFatal error: Call to undefined method IOFactory::identify() in /home/kejarik0/public_html/mon_kejari/application/controllers/Excel_pidum.php on line 30
A PHP Error was encountered
Severity: Error
Message: Call to undefined method IOFactory::identify()
Filename: controllers/Excel_pidum.php
Line Number: 30
Backtrace:
sebelumnya error seperti yg di atas gan (Non-existent class: IOFactory
BalasHapus) saya ikuti petunjuk errornya langsung berubah kayak gitu.
Sekarang error nya berubah lagi jadi gini gan : Error loading file "assets": Could not open http://kejari-kendari.go.id/mon_kejari/assets/ for reading! File does not exist.
BalasHapusUntuk masalah IOFactory coba cek pengaturan PHPExcel gan dan untuk masalah File does not exist, coba pengaturan url nya jika menggunakan linux coba ganti permissionnya
BalasHapusGan,
BalasHapussy menemukan error seperti agan diatas:
Error loading file "test_import.xlsx": Could not open http://localhost/ci/uploads/test_import.xlsx for reading! File does not exist.
File sudah berhasil terupload.
Sy menggunakan windows dan Ci 3
Apakah ada pengaturan yg kurang gan?
COba di check gan difile agan simpan dihasil upload sudah ada apa belum jika belum check penyimpanan hasil upload file $config['upload_path'] = './upload/'; , jika ngikutin tutor pasti berhasil
Hapusmas kalau request your page not found di ...import/upload/ knapa ya?
BalasHapusmas ,sy coba buat tanggal ko ga bs y?
BalasHapusterimakasih codenya :)
BalasHapusSama2 gan jangan lupa klik Iklan nya agar bisa terus berkarya..
Hapusgan saya dapet pesan error seperti ini :
BalasHapusA PHP Error was encountered
Severity: Notice
Message: Undefined property: Import::$db
Filename: controllers/import.php
Line Number: 59
Backtrace:
File: C:\xampp\htdocs\importexcel\application\controllers\import.php
Line: 59
Function: _error_handler
File: C:\xampp\htdocs\importexcel\index.php
Line: 315
Function: require_once
Apa karena saya tidak punya model?
disitu memang tidak dibuat model gan langsung proses insert dicontrollers, coba di cek libraries database sudah dipanggil belum??
Hapusiya gan sudah bisa terima kasih banyak min
Hapusada pesan error kayak gini gan
BalasHapusA PHP Error was encountered
Severity: Warning
Message: file_get_contents(./assets/): failed to open stream: No such file or directory
Filename: Shared/OLERead.php
Line Number: 86
file excelnya sudah bisa di upload tapi belom bisa masuk db. mohon bantuannya gan
bang,errornya skrg bgini, file nya sih masuk ke folder,tapi pas read filenya dia error bgini,arahannya donk bang
BalasHapusError loading file "filetest.xlsx": Could not open upload/filetest.xlsx for reading! File does not exist.
coba gan di cek lagi scriptnya sesuai tutorial, cek path lokasi file upload.
Hapusfile uploadnya uda masuk gan di path nya,tapi pas mau read filenya dia malah ga kebaca,gmn ya?
Hapusbro irwan,kan gw coba kluarin hasil array dari
BalasHapus$fileName = $this->input->post('file', TRUE);
$config['upload_path'] = 'assets/upload_excel/';
$config['file_name'] = $fileName;
nah $filenamenya ini slalu null, ada pemecahan utk masalah ini?
halo gan... ane ada eror kayak gini.
BalasHapusError loading file "test_web3.xlsx": Could not open http://localhost/presensi/Assets/upload/test_web3.xlsx for reading! File does not exist.
mohon solusi...
silahkan dicek lagi gan controllers nya, cek path nya
Hapusgan kog punya ane keluar pesan ada kesalahan upload, yang salah apanya ?
BalasHapusCoba ikuti sesuai tutorial
HapusA PHP Error was encountered
BalasHapusSeverity: Warning
Message: file_get_contents(./uploads/): failed to open stream: No such file or directory
Filename: Shared/OLERead.php
Line Number: 85
Backtrace:
File: D:\xampp\htdocs\maps\application\libraries\PHPExcel\Shared\OLERead.php
Line: 85
Function: file_get_contents
File: D:\xampp\htdocs\maps\application\libraries\PHPExcel\Reader\Excel5.php
Line: 451
Function: read
File: D:\xampp\htdocs\maps\application\libraries\PHPExcel\IOFactory.php
Line: 280
Function: canRead
File: D:\xampp\htdocs\maps\application\libraries\PHPExcel\IOFactory.php
Line: 205
Function: createReaderForFile
File: D:\xampp\htdocs\maps\application\controllers\Pemilih.php
Line: 458
Function: identify
File: D:\xampp\htdocs\maps\index.php
Line: 315
Function: require_once
gan, saya muncul error seperti itu, kenapa ya??
cek dengan detail lagi gan scriptnya....
HapusGan, kalo pas lagi upload trus ga jalan jalan itu gimana ya? Dia waiting for localhost... terus
BalasHapussemua udah di setting, saya pake CI 3, database oracle. Semua sudah disesuaikan.
Mas, Kalo ingin update data kan tinggal tambahin query di looping nya, tapi kalo misalnya di excel kita ada data lama (ubah) sama data baru (insert) malah error. duplicate entry pas bagian controller eksekusi query insertnya
BalasHapuskalo duplicate entry berarti ada data yang sama ID nya coba cek datafield database nya, jika ingin update dengan excel berarti kita buat query dlu sesuai colom id excel sebagai parameternya.
HapusMin kalau di excelya terdapat tanggal
BalasHapuscarannya gimana?
di database saya jadinya 0000-00-00
gmn pa dah ketemu solusinya?
HapusMin jika di excelnya terdapat logo/gambar
BalasHapuscara importnya gimana?
MOHON DIBALAS
pendapat saya itu tidak bisa dilakukan karena haya mengambil text pada kolom, namun bisa gunakan cara lain yakni, untuk upload gambar dilakukan secara terpisah masukan saja nama gambar nya pada excel, lalu bikin file upload gambar dengan nama gambar sesuai dari file excel...lalu panggil path nya.. itu solusi saya
Hapusmas tutorialnya sudah saya ikutin dan saya sesuaikan dengan kebutuhan saya, tidak ada error tapi datanya tidak masuk ke database . mohon bantuannya mas. terimakasih
BalasHapusCoba di cek file nya sudah masuk ke upload apa belum??
Hapusfilenya juga belum masuk
Hapuscoba mba di set autoload untuk helper file, form
Hapussudah di set sebelumnya klo helper..
Hapuskalo file belum masuk coba pengaturan php.ini file_uploads=On, coba cek lagi nama input file, kalo dah nyerah saya bantu penyelesainya.
Hapusfile_upload di php ini juga sudah on...
Hapusfile nya sudah masuk ke folder upload, tapi ada error "Call to undefined method PHPExcel_Worksheet::rangeToArray()"
Hapusmohon bantuannya mas
silahkan kriim file controllres sama contoh file excel nya ke irwan.develop@gmail.com gara saya bisa cek kesalhan script nya
Hapussudah saya kirim mas, terimakasih
Hapussudah jalan.. makasih banyak om..
BalasHapussama sama
Hapusklo datanya ga masuk kedatabase gmna ?? gaada yang error
BalasHapuscek file nya sudah masuk ke folder upload blm, kalo belum tambahkan helper, kalo blm masuk database check query nya.
Hapusboleh minta syntax contohnya ??
BalasHapussilahkan pm saya irwan.develop@gmail.com
HapusDuh Error mas
BalasHapusSeverity: Warning
Message: file_get_contents(./assets/xls/): failed to open stream: No such file or directory
Filename: Shared/OLERead.php
Line Number: 85
Backtrace:
coba cek lagi pathnya mas.
Hapusbiasanya karena file nya gak ditemukan kalau error "failed to open stream: No such file or directory".
Setelah dimasukin ke hosting kok tidak bisa diupload ya admin tapi kalo localhost lancara jaya...mohon solusi nya
BalasHapuskeren gan maksih banyak sudah share
BalasHapusA Database Error Occurred
BalasHapusError Number: 1062
Duplicate entry '1' for key 'PRIMARY'
INSERT INTO `eimport` (`idimport`, `nama`, `alamat`, `kontak`) VALUES (1, 'suku', 'etgh', 867623764)
Filename: C:/xampp/htdocs/sipandu/application/controllers/excel.php
Line Number: 60
mohon dibantu mas
itu terjadi karena idimport nya ada yang sama duplicate(primary key), coba set id import nya pake auto_incrument atau uuid biar tidak bentrok
HapusA Database Error Occurred
BalasHapusError Number: 1062
Duplicate entry '1' for key 'PRIMARY'
INSERT INTO `eimport` (`idimport`, `nama`, `alamat`, `kontak`) VALUES (1, 'suku', 'etgh', 867623764)
Filename: C:/xampp/htdocs/sipandu/application/controllers/excel.php
Line Number: 60
mohon dibantu mas
kalau upload excel tersebut berkali2, apakah data tersebut akan duplikat, atau malah terjadi error? misalnya excel tersebut memiliki update-an terbaru?
BalasHapusjika kita ulang berkali-kali pasti duplikat karena import bedasarkan value dari excel nya kecuali ada primary key pada tabel makan import berhenti. kalo ingin membuat update data itu tergantung query nya dan yang pasti harus ada parameter ID yang harus sama saat di import.
Hapuskalau menggunakan primary key apakah bisa mengupdate datanya? Atau malah terjadi error pd saat mengimport ya kak? Kira2 yang di ubah pada bagian syntax yang mana ya? Maaf saya masih newbie hehe
Hapusmaaf gan,
BalasHapus"minta bantuannya, saya sudah coba project.nya, lancar,
tapi setelah saya tekan tombol import langsung masuk ke halaman "about:blank" tidak tampil apapun, dan data tidak masuk, itu kenapa ya? mohon bantuannya "
kasus saya seperti diatas, bagaimana mengatasinya ya gan?, terima kasih
di localhost atau dihosting?
Hapusdilocalhost gan
Hapusapakah ada pesan error yang muncul? coba di cek di log error
Hapusmohon maaf , apa ada solusinya harus bagaimana?
BalasHapusKalau mencegah duplikasi data saat import gimana gan?
BalasHapuscara paling mudah dengan mengecek id nya dulu jika ada yang sama maka proses import akan di cancel jika tidak maka proses import di eksekusi...
HapusMas bisa bantu saya mas, saya gak tahu query biar datany yang dimasukin gk duplicate, bisa bantu mas kasih tahu query sama codenya apa?
BalasHapusyang tidak mau duplikate bisanya ID yang primary diubah buat Autoincrument atau dibuat random
Hapuskok terus muncul
BalasHapusAn Error Was Encountered
Unable to load the requested class: IOFactory
mohon pencerahan suhu
coba cek dimari untuk masalah IO Factory https://cahbagusnongkrong.blogspot.com/2016/09/mengatasi-error-non-existent-class.html
Hapusterimakasih banyak suhu, baru mau suhu
HapusKomentar ini telah dihapus oleh pengarang.
BalasHapusmin, untuk file model nya gmana ?
BalasHapusmohon bimbingannya
dan sekarang errornya ini gan
HapusError loading file "format.xlsx": Could not open http://localhost:8080/fuzzy/assets/upload/format.xlsx for reading! File does not exist.
saing gan,,kalo data kita berada didalam sheet 2 bagaiman caranya gan??
BalasHapussoalx saya coba dy hanya membaca sheet yang pertama aja.
thankss
coba ubah getSheet jika 0 = sheet 1, jika 1 berarti shet 2,
Hapus$sheet = $objPHPExcel->getSheet(0);