Disini saya akan melanjutkan tutorial pembuatan excel dengan librari PhpSpreadsheet, setelah sebelumnya saya buat tutorial cara export data ke excel dengan PhpSpreadsheet. Kenapa saya buat tutorial import data excel lagi? . 2. 8. Maka dari itu, tutorial ini dibuat agar teman-teman semua tetap bisa membuat improt data excel walaupun sudah pakai PHP versi terbaru sekalipun (PHP 8). Yuk simak step by stepnya dibawah ini Show PENTING, MOHON DIBACA TERLEBIH DAHULU Berikut adalah fitur-fitur yang akan kita buat
DEMO LANGKAH 1 – PERSIAPAN
LANGKAH 2 – Unduh PhpSpreadsheet Setelah memastikan teman-teman sudah menginstall composernya, silahkan ikuti langkah berikut
Baca Juga
LANGKAH 3 – DATABASE
LANGKAH 4 – DATABASE KONEKSI <?php $host = "localhost"; // Nama hostnya $username = "root"; // Username $password = ""; // Password (Isi jika menggunakan password) $database = "mynotescode"; // Nama databasenya $connect = mysqli_connect($host, $username, $password, $database); // Koneksi ke MySQL ?>_ LANGKAH 5 – LIHAT DATA <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Import Data Excel dengan PhpSpreadsheet</title> </head> <body> <h3>Data Siswa Hasil Import</h3> <a href="form.php">Import Data</a><br><br> <table border="1" cellpadding="5"> <tr> <th>No</th> <th>NIS</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Telepon</th> <th>Alamat</th> </tr> <?php // Load file koneksi.php include "koneksi.php"; // Buat query untuk menampilkan semua data siswa $sql = mysqli_query($connect, "SELECT * FROM siswa"); $no = 1; // Untuk penomoran tabel, di awal set dengan 1 while ($data = mysqli_fetch_array($sql)) { // Ambil semua data dari hasil eksekusi $sql echo "<tr>"; echo "<td>" . $no . "</td>"; echo "<td>" . $data['nis'] . "</td>"; echo "<td>" . $data['nama'] . "</td>"; echo "<td>" . $data['jenis_kelamin'] . "</td>"; echo "<td>" . $data['telp'] . "</td>"; echo "<td>" . $data['alamat'] . "</td>"; echo "</tr>"; $no++; // Tambah 1 setiap kali looping } ?> </table> </body> </html> Saya akan coba jelaskan sedikit mengenai kode diatas termasuk “koneksi. php”; $sql = mysqli_query($koneksi, “SELECT * FROM siswa”); $data = mysqli_fetch_array($sql) Kode tersebut berfungsi untuk mengambil semua data hasil query dan menampung data-data tersebut di dalam sebuah array lalu menyimpannya ke dalam variabel $data . Kode tersebut saya simpan di dalam sebuah kode while(…. ) yang berfungsi untuk melakukan proses perulangan sampai data terkahir dengan tujuan agar kita bisa menampilkan datanya satu per satu. echo "<tr>"; echo "<td>".$no."</td>"; echo "<td>".$data['nis']."</td>"; echo "<td>".$data['nama']."</td>"; echo "<td>".$data['jenis_kelamin']."</td>"; echo "<td>".$data['telp']."</td>"; echo "<td>".$data['alamat']."</td>"; echo "</tr>"; Pada kode di atas terdapat variabel $data digunakan untuk mengambil isi dari field-field yang ada pada tabel . di database mynotescode. Pada kode diatas juga ada kode yang berada pada tanda ['……'] , kode tersebut harus sama dengan nama field yang ada pada tabel siswa. LANGKAH 6 – FORMULIR DAN PREVIEW <?php // Load file autoload.php require 'vendor/autoload.php'; // Include librari PhpSpreadsheet use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Import Data Excel dengan PhpSpreadsheet</title> <!-- Load File jquery.min.js yang ada difolder js --> <script src="js/jquery.min.js"></script> <script> $(document).ready(function() { // Sembunyikan alert validasi kosong $("#kosong").hide(); }); </script> </head> <body> <h3>Form Import Data</h3> <form method="post" action="form.php" enctype="multipart/form-data"> <a href="Format.xlsx">Download Format</a> | <a href="index.php">Kembali</a> <br><br> <input type="file" name="file"> <button type="submit" name="preview">Preview</button> </form> <hr> <?php // Jika user telah mengklik tombol Preview if (isset($_POST['preview'])) { $tgl_sekarang = date('YmdHis'); // Ini akan mengambil waktu sekarang dengan format yyyymmddHHiiss $nama_file_baru = 'data' . $tgl_sekarang . '.xlsx'; // Cek apakah terdapat file data.xlsx pada folder tmp if (is_file('tmp/' . $nama_file_baru)) // Jika file tersebut ada unlink('tmp/' . $nama_file_baru); // Hapus file tersebut $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); // Ambil ekstensi filenya apa $tmp_file = $_FILES['file']['tmp_name']; // Cek apakah file yang diupload adalah file Excel 2007 (.xlsx) if ($ext == "xlsx") { // Upload file yang dipilih ke folder tmp // dan rename file tersebut menjadi data{tglsekarang}.xlsx // {tglsekarang} diganti jadi tanggal sekarang dengan format yyyymmddHHiiss // Contoh nama file setelah di rename : data20210814192500.xlsx move_uploaded_file($tmp_file, 'tmp/' . $nama_file_baru); $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $spreadsheet = $reader->load('tmp/' . $nama_file_baru); // Load file yang tadi diupload ke folder tmp $sheet = $spreadsheet->getActiveSheet()->toArray(null, true, true, true); // Buat sebuah tag form untuk proses import data ke database echo "<form method='post' action='import.php'>"; // Disini kita buat input type hidden yg isinya adalah nama file excel yg diupload // ini tujuannya agar ketika import, kita memilih file yang tepat (sesuai yg diupload) echo "<input type='hidden' name='namafile' value='" . $nama_file_baru . "'>"; // Buat sebuah div untuk alert validasi kosong echo "<div id='kosong' style='color: red;margin-bottom: 10px;'> Semua data belum diisi, Ada <span id='jumlah_kosong'></span> data yang belum diisi. </div>"; echo "<table border='1' cellpadding='5'> <tr> <th colspan='5' class='text-center'>Preview Data</th> </tr> <tr> <th>NIS</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Telepon</th> <th>Alamat</th> </tr>"; $numrow = 1; $kosong = 0; foreach ($sheet as $row) { // Lakukan perulangan dari data yang ada di excel // 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 $telp = $row['D']; // Ambil data telepon $alamat = $row['E']; // Ambil data alamat // Cek jika semua data tidak diisi if ($nis == "" && $nama == "" && $jenis_kelamin == "" && $telp == "" && $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 $telp_td = (!empty($telp)) ? "" : " style='background: #E07171;'"; // Jika Telepon 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 $telp == "" 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" . $telp_td . ">" . $telp . "</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 "</form>"; } else { // Jika file yang diupload bukan File Excel 2007 (.xlsx) // Munculkan pesan validasi echo "<div style='color: red;margin-bottom: 10px;'> Hanya File Excel 2007 (.xlsx) yang diperbolehkan </div>"; } } ?> </body> </html>_ Saya tidak akan menjelaskan soal skrip diatas, karena sudah saya jelaskan per masing-masing skrip (dengan komentar). Tapi saya akan menjelaskan alur form import diatas. Pertama, User harus mendownload Format File Excel yang sudah kita buat sebelumnya. Kedua, User megisi data yang akan di import pada file excel yang sudah di download tadi. Ketiga, user memilih file excel yang akan di import datanya lalu klik tombol preview. Keempat, Ketika pengguna mengklik tombol preview, sistem akan melakukan
Baca Juga
LANGKAH 7 – IMPOR PROSES <?php // Load file koneksi.php include "koneksi.php"; // Load file autoload.php require 'vendor/autoload.php'; // Include librari PhpSpreadsheet use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; if(isset($_POST['import'])){ // Jika user mengklik tombol Import $nama_file_baru = $_POST['namafile']; $path = 'tmp/' . $nama_file_baru; // Set tempat menyimpan file tersebut dimana $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $spreadsheet = $reader->load($path); // Load file yang tadi diupload ke folder tmp $sheet = $spreadsheet->getActiveSheet()->toArray(null, true, true, true); $numrow = 1; 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 $telp = $row['D']; // Ambil data telepon $alamat = $row['E']; // Ambil data alamat // Cek jika semua data tidak diisi if($nis == "" && $nama == "" && $jenis_kelamin == "" && $telp == "" && $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){ // Buat query Insert $query = "INSERT INTO siswa VALUES('" . $nis . "','" . $nama . "','" . $jenis_kelamin . "','" . $telp . "','" . $alamat . "')"; // Eksekusi $query mysqli_query($connect, $query); } $numrow++; // Tambah 1 setiap kali looping } unlink($path); // Hapus file excel yg telah diupload, ini agar tidak terjadi penumpukan file } header('location: index.php'); // Redirect ke halaman awal Sedikit tambahan penjelasan dari skrip diatas $nis = $baris[‘ A ‘]; 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 Selamat Coding ^_^ KODE SUMBER Sumber & Referensi Tutorial import data dari excel dengan phpspreadsheet, php dan mysql, Tutorial import data dari excel dengan phpspreadsheet, Cara import data excel dengan phpspreadsheet, php dan mysql, import data excel dengan phpspreadsheet, import data dari excel dengan phpspreadsheet, php dan mysql, Source Code Bagaimana cara mengimpor file Excel ke MySQL di PHP?php gunakan Phppot\DataSource; . php'; . /vendor/muat otomatis. php'); . ms-excel', 'teks/xls', 'teks/xlsx', 'aplikasi/vnd
Bagaimana cara mengimpor PhpSpreadsheet?Instalasi . Unduh dan instal CodeIgniter Gunakan Komposer untuk menginstal PhpSpreadsheet ke dalam proyek Anda. komposer memerlukan phpoffice/phpspreadsheet Buka aplikasi/config/config. php dan atur jalur direktori vendor Anda. . Gunakan phpspreadsheet perpustakaan di dalam pengontrol Anda Bagaimana cara membaca file Excel menggunakan PhpSpreadsheet?Cara paling sederhana untuk memuat file buku kerja adalah membiarkan Pabrik IO PhpSpreadsheet mengidentifikasi jenis file dan memuatnya, memanggil metode static load() dari \PhpOffice\PhpSpreadsheet\ . $inputFileName = '. /sampelData/contoh1. . $inputFileName = './sampleData/example1.
Bagaimana cara mengunggah file Excel CSV ke database dengan PHP MySQL?Langkah-langkah untuk mengimplementasikan pengimporan CSV ke MySQL . Buat database target untuk menyimpan catatan CSV Rancang formulir impor dan tangani validasi Kembangkan titik akhir pembacaan file PHP untuk mengimpor CSV ke database MySQL |