Tutorial PHP Part 54 – Import Data dari Excel Ke MySQL dengan PHP menggunakan PhpSpreadSheet
Selamat datang di warung belajar, melanjutkan pembahasan seri tutorial PHP, pada part 54 kita akan belajar mengenai cara import data dari file excel ke database mysql dengan php menggunakan library phpspreadsheet.
Cara ini bisa anda gunakan untuk mengimport data yang berada di file excel, agar dapat dimasukkan ke database mysql, disini kita masih menggunakan library phpspreadsheet karena memang library ini sangat powerfull baik untuk membuat dan membaca file excel.
Tutorial cara membuat file excel dengan menggunakan phpspreadsheet bisa anda cek di tutorial kita sebelumnya : Cara membuat report excel di php menggunakan phpspreadsheet
Kali ini kita akan memanfaatkan fitur lain yang disediakan oleh phpspreadsheet yaitu untuk membaca file excel
Baik ilustrasi proses import data dari excel ke database mysql adalah sebagai berikut :
- Kita buat database siswa yang berisi tabel dan kolom – kolom yang kita set untuk menyimpan data siswa
- kita buat file excel yang berisi data siswa, dimana datanya sesuai kolom di tabel database siswa
- kita akan buat form upload
- ketika file excel tersebut di upload, maka otomatis data yang ada di file excel akan disimpan di database siswa
baik kita langsung mulai prosesnya.
Mempersiapkan database siswa
Kita akan buat database siswa, contohnya kita buat dengan nama db_siswa, kita akan menggunakan phpmyadmin, karena dalam contoh ini kita menggunakan xampp, untuk tutorial install xampp bisa lihat tutorial kita sebelumnya : cara menginstall xampp
Baik kita asumsikan teman – teman sudah memiliki xampp, dan sudah bisa mengakses phpmyadmin.
buat database dengan nama db_siswa, lalu klik tombol buat
berikutnya kita buat tabel dengan nama tb_siswa, dengan kolom sebagai berikut :
Keterangan :
- id_siswa = sebagai primary key, dan auto increment
- nama = varchar 255
- kelas = varchar 255
- alamat = varchar 255
berikutnya silahkan klik tombol Simpan.
Atau teman – teman bisa menggunakan perintah SQL dibawah ini,untuk membuat database db_siswa, dan tabel tb_siswa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
-- phpMyAdmin SQL Dump -- version 4.8.4 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Waktu pembuatan: 06 Jul 2019 pada 01.07 -- Versi server: 10.1.37-MariaDB -- Versi PHP: 7.3.0 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `db_siswa` -- CREATE DATABASE IF NOT EXISTS `db_siswa` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `db_siswa`; -- -------------------------------------------------------- -- -- Struktur dari tabel `tb_siswa` -- CREATE TABLE `tb_siswa` ( `id_siswa` int(11) NOT NULL, `nama` varchar(255) NOT NULL, `kelas` varchar(10) NOT NULL, `alamat` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for dumped tables -- -- -- Indeks untuk tabel `tb_siswa` -- ALTER TABLE `tb_siswa` ADD PRIMARY KEY (`id_siswa`); -- -- AUTO_INCREMENT untuk tabel yang dibuang -- -- -- AUTO_INCREMENT untuk tabel `tb_siswa` -- ALTER TABLE `tb_siswa` MODIFY `id_siswa` int(11) NOT NULL AUTO_INCREMENT; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
baik kita asumsikan teman – teman sudah memiliki database siswa, seperti contoh diatas, kita lanjut ke step selanjutnya.
Buat Folder project
Berikutnya kita akan buat folder project, karena dalam contoh ini kita menggunakan xampp, sehingga project kita simpan di C:/xampp/htdocs
dalam contoh ini nama folder projectnya adalah importexcel
berikutnya didalamnya kita buat 3 file antara lain :
- form_upload.html
- koneksi.php
- proses.php
jadi kurang lebih tampilannya seperti ini :
baik kita asumsikan teman – teman sudah membuat folder project, dan juga sudah berisi file – file tersebut.
Menginstall library phpspreadsheet melalui composer.
Untuk menginstall phpspreadsheet kita akan menggunakan composer, jadi pastikan anda sudah menginstall composer, jika belum menginstall composer silahkan install terlebih dahulu, untuk tutorial instalasi composer bisa dilihat disini : Cara Menggunakan Composer untuk project PHP
Baik kita asumsikan teman – teman sudah menginstall composer, silahkan buka terminal / command prompt, lalu silahkan akses folder project dalam hal ini ada di C:/xampp/htdocs/importexcel
lalu tuliskan perintah berikut ini :
1 |
composer require phpoffice/phpspreadsheet |
Pastikan komputer yang anda gunakan terkoneksi dengan internet, lalu tekan tombol enter.
Silahkan tunggu hingga proses instalasi library phpspreadsheet selesai.
Membuat Koneksi Ke Database
Kita asumsikan teman – teman sudah menginstall library phpspreadsheet di folder project (importexcel), langkah berikutnya silahkan buka file koneksi.php yang ada di folder project, lalu isikan dengan code dibawah ini :
1 2 3 4 5 6 7 |
<?php $host = "localhost"; $user = "root"; $password = ""; $database = "db_siswa"; $koneksi = mysqli_connect($host, $user, $password, $database); ?> |
Keterangan :
- Perintah diatas digunakan untuk koneksi ke database db_siswa yang sebelumnya telah kita buat.
- $host dengan nilai “localhost” yang merupakan alamat server databasenya
- $user dengan nilai “root” yang merupakan user dari databasenya
- $password dengan nilai “” yang merupakan password untuk mengakses database, nilainya kosong karena default dari xampp untuk password user root adalah kosong
- $database dengan nilai “db_siswa” yang merupakan nama dari database yang sebelumnya telah kita buat
- Baris 6 adalah perintah untuk melakukan koneksi ke database, dan hasilnya disimpan di variabel $koneksi.
Membuat Form Upload
Silahkan buka file form_upload.html, lalu isikan dengan code seperti dibawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <fieldset> <legend>Form Upload Excel</legend> <form method="post" enctype="multipart/form-data" action="proses.php"> <div class="form-group"> <label for="exampleInputFile">File Upload</label> <input type="file" name="berkas_excel" class="form-control" id="exampleInputFile"> </div> <button type="submit" class="btn btn-primary">Import</button> </form> </fieldset> </body> </html> |
Untuk menampilkan form, anda bisa mengakses alamat : localhost/importexcel/form_upload.html
Keterangan :
Dalam form tersebut kita membuat sebuah input type file dengan nama berkas_excel
Pada attribute form kita menggunakan method=”post”, enctype=”multipart/form-data”, dan action=”proses.php”
Jadi bisa kita simpulkan ketika tombol import di klik, maka inputan form akan diproses di file proses.php dengan menggunakan method post.
Membuat pemrosesan form upload
Silahkan buka file proses.php di folder project, lalu isikan dengan code seperti dibawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php include('koneksi.php'); require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Reader\Csv; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; $file_mimes = array('application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); if(isset($_FILES['berkas_excel']['name']) && in_array($_FILES['berkas_excel']['type'], $file_mimes)) { $arr_file = explode('.', $_FILES['berkas_excel']['name']); $extension = end($arr_file); if('csv' == $extension) { $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv(); } else { $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); } $spreadsheet = $reader->load($_FILES['berkas_excel']['tmp_name']); $sheetData = $spreadsheet->getActiveSheet()->toArray(); for($i = 1;$i < count($sheetData);$i++) { $nama = $sheetData[$i]['1']; $kelas = $sheetData[$i]['2']; $alamat = $sheetData[$i]['3']; mysqli_query($koneksi,"insert into tb_siswa (id_siswa,nama,kelas,alamat) values ('','$nama','$kelas','$alamat')"); } header("Location: form_upload.html"); } ?> |
Baik kita coba dulu gunakan perintah diatas, baru kita akan bahas apa fungsi code php di file proses.php.
Mencoba Proses Upload Excel
Untuk Testing proses upload file excel, langkah – langkahnya adalah sebagai berikut :
1. Silahkan akses alamat : localhost/importexcel/form_upload.html
2. Buatlah file excel, dengan format seperti berikut ini :
semisal kita simpan dengan nama data_siswa.xlsx
3. Berikutnya silahkan upload file excel tersebut didalam form upload, lalu klik tombol import.
4. Lalu perhatikan di database db_siswa, pada tabel tb_siswa, maka akan terdapat data siswa sesuai yang kita tulis di dalam tabel excel yang kita upload
Penjelasan File Proses.php
Setelah kita berhasil mengimport file excel ke database, berikutnya kita akan bahas perintah – perintah yang ada di file proses.php, penjelasannya adalah sebagai berikut :
1 |
include('koneksi.php'); |
Baris 2 kita include file koneksi.php agar bisa terkoneksi dengan database
1 |
require 'vendor/autoload.php'; |
Baris 3 kita require file autoload di folder vendor, agar dapat menggunakan library yang telah kita download sebelumnya
1 2 3 |
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Reader\Csv; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; |
Baris 5 – 7 kita gunakan namespace untuk dapat mengakses class yang ada di library phpspreadsheet
1 |
$file_mimes = array('application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); |
Baris 9 kita menuliskan beberapa format file excel, yang nantinya akan digunakan sebagai validasi format file yang didukung, sebelum proses import data kedatabase dilakukan
1 |
if(isset($_FILES['berkas_excel']['name']) && in_array($_FILES['berkas_excel']['type'], $file_mimes)) { |
Baris 11 code memeriksa apakah memang ada file yang kita pilih saat proses import dilakukan, serta format tipe file sesuai dengan yang telah kita tentukan pada array $file_mimes
1 2 |
$arr_file = explode('.', $_FILES['berkas_excel']['name']); $extension = end($arr_file); |
Baris 13 – 14 kita lakukan explode pada nama file excel, untuk mengetahui extention file yang kita pilih.
1 2 3 4 5 |
if('csv' == $extension) { $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv(); } else { $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); } |
Baris 16 kita lakukan pengecekan jika file extention adalah csv maka akan dibuat object dengan class reader csv (baris 17), tetapi jika tidak dibuatkan object dengan class reader xlsx (baris 19), setelah saya coba perintah ini hanya mendukung format Xlsx, dan csv
1 |
$spreadsheet = $reader->load($_FILES['berkas_excel']['tmp_name']); |
Baris 22 kita load file excel yang kita upload dan disimpan didalam variabel $spreadsheet
1 |
$sheetData = $spreadsheet->getActiveSheet()->toArray(); |
Baris 24 kita membuat variabel $sheetData yang digunakan untuk menyimpan array, hasil konversi isi dari file excel, menjadi bentuk array.
1 |
for($i = 1;$i < count($sheetData);$i++) |
Baris 25 kita lakukan perulangan dengan menggunakan for, perhatikan pada variabel awal $i, kita menuliskan angka 1, hal tersebut dikarenakan data di file excel yang kita upload, isi datanya dimulai dari baris 2, lalu kenapa variabel $i memiliki nilai 0 bukan 2 ?
Hal tersebut dikarenakan index array hasil konversi file excel dimulai dari index ke 0, sehingga untuk baris 2 akan terhitung sebagai index 1
1 |
$nama = $sheetData[$i]['1']; |
Baris 27 kita membuat variabel $nama untuk menyimpan data pada kolom nama, disitu kita tulis index ke 1, karena bagian nama berada di kolom ke 2, ingat index array dimulai dari angka 0 bukan 1
1 |
$kelas = $sheetData[$i]['2']; |
Baris 28 kita membuat variabel $kelas untuk menyimpan data pada kolom kelas, disitu kita tulis index ke 2, karena bagian nama berada di kolom ke 3
1 |
$alamat = $sheetData[$i]['3']; |
Baris 29 kita membuat variabel $alamat untuk menyimpan data pada kolom alamat, disitu kita tulis index ke 3, karena bagian nama berada di kolom ke 4
1 |
mysqli_query($koneksi,"insert into tb_siswa (id_siswa,nama,kelas,alamat) values ('','$nama','$kelas','$alamat')"); |
Baris 30 kita menuliskan query untuk insert data ke tabel tb_siswa dengan nilai variabel $nama,$kelas, dan $alamat.
1 |
header("Location: form_upload.html"); |
Baris 32 setelah proses perulangan selesai, maka kita akan redirect kembali ke halaman form_upload.html
File Hasil Belajar
Untuk File Hasil belajar bisa didownload :
Source Code Import data dari excel ke Database MySQL
Baik kurang lebih seperti itu teman – teman pembahasan dari seri tutorial kali ini, kita sudah membahas bagaimana cara membuat fitur Import data Excel Ke Database MySQL dengan PHP menggunakan PhpSpreadSheet, jika ada yang ingin didiskusikan silahkan dikolom komentar.
ANDA INGIN SERIUS BELAJAR PEMROGRAMAN PHP ?
Seperti yang anda ketahui bahwa saat ini skill di bidang pemrograman sangatlah dibutuhkan, salah satunya adalah pemograman PHP.
Untuk anda yang ingin serius belajar pemrograman PHP, Warung Belajar Memiliki Beberapa Paket Tutorial yang bisa membantu anda dalam belajar Pemrograman PHP, dari mulai step – step dasar hingga mampu membuat aplikasi berbasis web dengan menggunakan PHP.
Paket Tutorial ini berisi video tutorial belajar pemrograman berbahasa indonesia, cocok sekali untuk anda yang sedang belajar pemrograman PHP, bahkan untuk orang awam sekalipun.
Paket Tutorial ini juga dilengkapi dengan study kasus yang akan mempermudah pemahaman anda dalam belajar pemrograman, Mari berinvestasi untuk menambah skill dalam menguasai Pemrograman PHP
-
Tutorial Seminggu Menguasai PHP Dan MySQL
Rp80,000 Add to cart -
Tutorial HTML White Box – Panduan Belajar HTML Lengkap
Rp70,000 Add to cart -
Tutorial Web Programming Black Box – Tutorial Belajar HTML, CSS, Bootstrap 4, PHP OOP, dan MySQL – Study Kasus Membuat Aplikasi Sistem Management Stok Barang
Rp120,000 Add to cart -
Tutorial Membuat Aplikasi Dengan Codeigniter, Javascript Dan Ajax Jquery
Rp95,000 Add to cart -
Tutorial Membangun Layanan SMS Gateway Berbasis Client Server
Rp145,000 Add to cart -
Tutorial Membuat Aplikasi Dinamis Dengan HTML CSS Boostrap PHP Dan MySQL
Rp120,000 Add to cart -
TUTORIAL MEMBANGUN APLIKASI BERBASIS WEB DENGAN PHP MYSQL DAN BOOTSTRAP
Rp95,000 Add to cart -
Tutorial Tips Dan Trik Aplikatif Master PHP
Rp85,000 Add to cart
Ilmunya bermanfaat banged.
Terima kasih.
Gan kok di composer gue ga bisa yah
gak bisanya gimana gan ? pastikan koneksi internetnya stabil, sama coba clean chace composernya dulu
Mantap Mas….
Terima kasih sharenya Mas
sama sama mas, terima kasih sudah belajar di warung belajar
gan setelah di input kenapa hanya baris pertama aja yang masuk, baris ke dua gak masuk
Tergantung perintah dibagian perulangannya gan, atau gak cek dibagian pemanggilan data per arrow
Atau coba sesuai dengan source code dibagian bawah gan, ada link download source code
kalau mau import data dengan cara memilih sheet 2 di excel gmn ka??
coba mas belajar di dokumentasi resmi dari phpspreadsheet, atau coba search dengan keyword import multi sheet in phpspreadsheet