Kita akan menggunakan library PHP Excel Reader, untuk keperluan percobaan ini saya menyertakan script dan database percobaan, link download bisa dilihat dibagian bawah tutorial ini.
Sebagai contoh, data yang akan kita pakai seperti gambar dibawah ini
Buat sebuah database di MySQL, lalu eksekusi script dibawah ini
CREATE TABLE IF NOT EXISTS `mesin` ( `mesinID` int(11) NOT NULL AUTO_INCREMENT, `mesin_code` varchar(11) NOT NULL, `desc` text NOT NULL, `seri` varchar(11) NOT NULL, `created_by` varchar(12) NOT NULL, `created_date` datetime NOT NULL, PRIMARY KEY (`mesinID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
table diatas adalah tempat untuk menyimpan file excel yang kita miliki.
Kita mulai ke pembuatan script import, buat sebuah file dengan nama import.php tambahkan script dibawah ini
<title>Script Import File Excel</title> <h1>Script Import File Excel</h1> <form method="post" enctype="multipart/form-data" action="jalan.php"> Pilih File Excel*: <input name="fileexcel" type="file"> <input name="upload" type="submit" value="Import"> </form> * file yang bisa di import adalah .xls (Excel 2003-2007).
Tampilan dari script diatas ketika dijalankan di browser seperti gambar dibawah ini
lalu buat script untuk memproses data dari file import.php, kita namakan jalan.php tambahkan script dibawah ini
<?php include "excel_reader2.php"; $username = "root"; $password = "aksesroot"; $database = "kacibang"; mysql_connect("localhost", $username, $password); mysql_select_db($database); // file yang tadinya di upload, di simpan di temporary file PHP, file tersebut yang kita ambil // dan baca dengan PHP Excel Class $data = new Spreadsheet_Excel_Reader($_FILES['fileexcel']['tmp_name']); $hasildata = $data->rowcount($sheet_index=0); // default nilai $sukses = 0; $gagal = 0; for ($i=2; $i<=$hasildata; $i++) { $data1 = $data->val($i,2); $data2 = $data->val($i,3); $data3 = $data->val($i,4); $created_by = 'Admin'; $date = date('Y-m-d H:i:s'); $rand = rand(); $query = "INSERT INTO mesin VALUES (null,'$data1','$data2','$rand', '$created_by', '$date')"; $hasil = mysql_query($query); if ($hasildata) $sukses++; else $gagal++; echo "< pre>"; print_r($query); echo "< /pre>"; } echo "<b>import data selesai.</b>"; echo "Data yang berhasil di import : ".$sukses.; echo "Data yang gagal diimport : ".$gagal.; echo "back import"; ?>
Script untuk mengimport Excel ke MySQL dengan PHP cukup sampai disini, sekarang coba buka file import.php di browser, pilih file excel yang mau di import pada contoh kodemesin.xls lalu klik import, contoh tampilan waktu proses import selesai
Untuk pengembangan lebih lanjut bisa dilihat pada bagian dokumentasi PHP Excel Reader
Link download di update 28 Oktober 2013
[ASK]
Data di Excel kolom 1 valuenya “MOTOR”
Setelah di import hasilnya dari kolom 1 valuenya “MOTO” (di tabel)
Jadi Valuenya kurang satu digit terakhir itu semua kolom seperti itu.
ada solusi??
ini pake php versi berapa? Udah coba pake cara https://jaranguda.com/mengimpor-excel-ke-mysql-dengan-phpspreadsheet/
Gan, untuk menampilkan data excel yang gagal diupload selain jumlahnya, bagaimana ya? Terima kasih.
Parse error: syntax error, unexpected ‘;’ in C:\xampp\htdocs\perpustakaan\jalan.php on line 39
mas kalo ada bacaan itu apa yang salah mas??
gan, ketika upload file untuk kedua kalinya (posisi database ada datanya), banyak data yang gagal di import, itu penyebabnya apa ya?
saya coba upload dengan file excel >10.000 baris.
mohon pencerahannya
kalo filenya segede itu emang harus dipecah dulu, bisa dipecah jadi beberapa file. Atau coba cari info tentang chunk
ijin download mas
Jika file excelnya perubahan data masal, bagian mana yg perlu di rubah ya pak
Ini sifatnya menimpa file input yang sebelumnya tidak ? misalnya sebelumnya upload test1.xls sukses. Lalu saya mau menambahkan upload test2.xls apakah file yang pertama diupload akan tertimpa dengan yang terakhir ?
file yang di upload hanya sementara, jadi walaupun meng-upload beberapa kali dengan nama yang sama ngga akan di timpa
thank you for the scripts… very helpful!!!
gan kl errornya ini kenapa ya?
syntax error, unexpected ‘new’ (T_NEW) in C:\xampp\htdocs\smsgateway\excel_reader2.php on line 916
emang yang mau di import seperti apa file excelnya?
semoga msih ada notif mas nya, saya juga sama mas kasusnya seperti mas diatas. file yg saya upload .xls mas, dengan php saya 8.0.2 apakah mempengaruhi?
mau nanya kalo data tidak ada di database gimana ?
maksudnya gini :
data di excel : kode=1,2,3
di database : kode=1,2
jadi yang kode 3 tidak masuk didatabase,,,,gimana boss ?
kalo dari sourcenya anda langsung masuk smua ke database…
pertanyaannya kurang jelas, ini data yang ngga ada data apa?
coba buat contoh aslinya biar lebih jelas kalo kode pake format 1,2,3 pasti ngga mungkin ada tanda komanya.
kurang jelas gimana….
ya g mungkin juga kode ada komanya..itu misalkan
kode di database:
1
2
kode di di excel:
1
2
3
jadi data yang di database kan cuman ada 1 dan 2 ?
yang jadi pertanyaan gimana prosesnya,,,kalo di anda =
$sukses = 0;
$gagal = 0;
for ($i=2; $ival($i,2);
$data2 = $data->val($i,3);
$data3 = $data->val($i,4);
$created_by = ‘Admin’;
$date = date(‘Y-m-d H:i:s’);
$rand = rand();
$query = “INSERT INTO mesin VALUES (null,’$data1′,’$data2′,’$rand’, ‘$created_by’, ‘$date’)”;
$hasil = mysql_query($query);
if ($hasildata) $sukses++;
else $gagal++;
itukan langsung masuk semua ke database tidak ada filternya…
masih kurang paham ???
ya ngga masalah lah, orang ngga ada pembanding data di database. di contoh diatas, databasenya masih kosong, jadi ngga ada masalah.
jadi anda contoh kasusnya mau nge bandingin data yang ada di database ya? kalo ga ada di tampilin error kalo ada langsung masuk?
kalo ia ntar saya kasi contoh scriptnya (logikanya) ntar takutnya ngga kaya gitu jadi sia-sia :P
gan dimana caranya agar hasil export database di sql digit terakhir tidak berubah jadi angka nol atau angkanya langsung diexport dalam format text
maksudnya gimana ya? kurang ngerti, bisa di kasi contoh
Bagaimana menangani ini gan?
The filename D:WebServerxampptmpphp2415.tmp is not readable
email ke : cobaseribu@gmail.com
Terimakasih…
coba di debug scriptnya, nama filenya dari mana?
mas boleh tanya jjika kita menginginkan data yang sudah di export ke exel itu tampilannya lebih baik gmna mas , seperti contoh kaya rekap absensi gitu mas , mohon pencerahaannya mas
terimakasih
tampilin pake tabel HTML aja
gan tanya ???? hilangin kode ini setelah proses gimana:
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\…….\…….\excel_reader2.php on line 916
pake PHP versi berapa? walaupun error tersebut muncul tapi proses import nya sukses kan?
kalau hanya menghilangkan warning setting di php.ini dibagian display_error = off lalu restart apachenya.
gan kalo field yg di insert tidak urut gimana scriptnya?
mohon bantuannya ane masih bangung thx :D
terus saya coba edit sendiri gabungin script dari web lain tapi error gan :D
errornya di line 916
gan tolong bantuannya kalau misal ketika ingin masukan ke mysql, maka dicek dulu apakah data yang masuk sudah ada atau belum untuk menghindari double insert.
contoh :
Kode = DT3686.
sebelum dimasukan ke mysql maka discript jalan.php sekalian dicek. apakah kode tersebut sudah pernah ada atau belum. kalau misal belum, maka data boleh masuk.
jika sudah ada maka kode tersebut berikut keterangan tidak akan dimasukan. dan ketika dimasukan akan diinfokan bahwa data gagal disimpan karena kode sudah ada sebanyak 7,8,9,dst ….
mohon bantuan pencerahan dalam pembuatan scriptnya.
salah satu caranya waktu pembuatan table MySQL nya columnya di setting UNIQUE
kalo untuk import file txt coding phpny seperti apa gan
Kalau buat format xlsx tidak bisa ya…
gimana caranya supaya bisa…
dan kalau mau input data tanggal formatnya gimana…
saya coba tanggal 2/2/2014 di excel tapi tidak bisa masuk ke database…
xlsx belum saya cobain, format tanggal bisa diliat dibagian $date = date(‘Y-m-d H:i:s’);
tinggal disesuaiin aja. Lihat manual date di http://php.net/manual/en/function.date.php
sudah seh, aku sudah pake itu untuk sistem akademik dan saya memakai untuk office 2003
untuk format xlsx g bisa ya…
hemm.. gan sepertinya script ini belum kompatibel 2007, soalnya aku dah coba, script di atas sudah pernah saya coba di atas dan hasilnyapun ada cell yang kosong di mysqlnya kalo pake excel 2007
kolom sama barisnya udah disesuaikan belum? dari percobaan saya selama ini ga ada masalah. Dan script ini dipake di sistem yang kita gunakan tiap hari.
bro… kok error gini ya setelah diimpor ??? di cek ke db pun gak masuk datanya
The filename C:\xampp\tmp\php3A2.tmp is not readable
mohon dibantu ya bro…
ke email : ricky-06@consultant.com
terima kasih tutorialnya
coba ubah $tmp_name = “C:\xampp\tmp” dan pastikan folder C:\xampp\tmp ada
gan kalo ditambahi tanggal sekarang sama username pembuat data gimana caranya
link download udah di update. silahkan di download
file.nya tidak bisa di download mas.., coba di upload di medifire
bisa kok, barusan saya coba ngga ada yang salah :D
ni errormya mas.,
di IDM jgha error 0 byte
======================
https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-ash3/p480x480/1374291_650495028306096_1449439330_n.jpg
oh iya bener, nanti senin saya upload ya :) thanks atas infonya
Kok Error gini ya bro? apa yang salah ya.
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\Monitoring\excel_reader.php on line 916
Notice: Undefined index: upload in C:\xampp\htdocs\Monitoring\proses_aploud.php on line 7
Notice: Undefined offset: 0 in C:\xampp\htdocs\Monitoring\excel_reader.php on line 390
pake PHP versi berapa? coba gunakan script yang di download, jangan dulu ganti namanya :)