Membuat Import Data Excel ke Database MySQL dengan PHP
Bagi sebagian orang, mungkin terdengar mudah untuk memasukkan data ke dalam database MySQL. Tapi, bagaimana jika data yang dimiliki dalam format Excel? Apakah bisa langsung dimasukkan ke dalam database MySQL? Jawabannya tentu bisa, tapi diperlukan sedikit trik menggunakan PHP agar proses import data dari Excel ke database MySQL dapat berjalan dengan sukses.
Secara umum, terdapat dua cara yang bisa digunakan untuk melakukan import data dari Excel ke database MySQL. Pertama, dengan menggunakan PHPExcel, yaitu sebuah library yang memungkinkan pengguna untuk memanipulasi file Excel. Kedua, dengan menggunakan PHP dan SOAP, yaitu sebuah protokol untuk pertukaran data melalui web service.
Untuk artikel ini, kita akan membahas cara menggunakan PHPExcel untuk mengimport data dari Excel ke database MySQL.
## Prasyarat
Sebelum memulai, pastikan bahwa kita telah memenuhi prasyarat berikut ini:
– Sudah menginstall XAMPP atau sejenisnya untuk mengakses MySQL
– Sudah menginstall Composer, yaitu package manager untuk PHP
– Sudah menginstall PHPExcel dengan menggunakan Composer
## Langkah-langkah
Berikut ini adalah langkah-langkah yang harus dilakukan untuk mengimport data dari Excel ke database MySQL dengan PHPExcel:
1. Pertama-tama, kita harus mempersiapkan file Excel yang akan diimpor. File Excel tersebut harus tersedia dalam format .xls atau .xlsx. Kita bisa menggunakan contoh file Excel dengan data yang telah disediakan di folder proyek, atau membuat file Excel baru dengan data yang ingin diimpor.
2. Selanjutnya, kita harus membuat class untuk mengimpor data dari Excel ke database MySQL. Buat file baru dengan nama ‘ImportExcel.php’ dan letakkan di folder ‘classes’. Berikut ini adalah kode awal untuk class tersebut:
“`php
conn = $conn;
public function import($filename, $sheetname)
$inputFileType = PHPExcel_IOFactory::identify($filename);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getSheetByName($sheetname);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
for ($row = 2; $row <= $highestRow; ++$row)
?>
“`
3. Kita akan membuat method ‘import’ untuk mengimpor data dari Excel ke database MySQL menggunakan PHPExcel. Pertama-tama, kita perlu mengidentifikasi tipe file Excel yang akan diimpor. Setelah itu, buat object PHPExcel pada file Excel tersebut dan ambil sheet yang akan diimpor. Berikut ini adalah kode untuk melakukan hal tersebut:
“`php
$inputFileType = PHPExcel_IOFactory::identify($filename);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getSheetByName($sheetname);
“`
4. Selanjutnya, kita akan menggunakan loop untuk mengimpor data pada tiap baris di sheet tersebut. Kita akan mengambil data pada kolom A, B, dan C pada tiap baris, dan memasukkannya ke dalam tabel ‘mahasiswa’ pada database MySQL dengan menggunakan query INSERT. Berikut ini adalah kode untuk melakukan hal tersebut:
“`php
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
for ($row = 2; $row <= $highestRow; ++$row)
$nama = $objWorksheet->getCellByColumnAndRow(0, $row)->getValue();
$nim = $objWorksheet->getCellByColumnAndRow(1, $row)->getValue();
$jurusan = $objWorksheet->getCellByColumnAndRow(2, $row)->getValue();
$query = “INSERT INTO mahasiswa (nama, nim, jurusan) VALUES (‘” . $nama . “‘, ‘” . $nim . “‘, ‘” . $jurusan . “‘)”;
mysqli_query($this->conn, $query);
“`
5. Terakhir, panggil method ‘import’ pada file ‘index.php’. Berikut ini adalah kode untuk melakukan hal tersebut:
“`php
require_once ‘classes/ImportExcel.php’;
$conn = mysqli_connect(‘localhost’, ‘root’, ”, ‘belajar_excel’);
$importer = new classes\ImportExcel($conn);
$importer->import(‘data_mahasiswa.xlsx’, ‘Mahasiswa’);
mysqli_close($conn);
echo ‘Import data selesai!’;
“`
## FAQ
1. Apakah bisa melakukan import data dari Excel dengan format .csv?
Jawab: Tentu bisa, tapi metodenya sedikit berbeda. Kita bisa menggunakan fungsi fgetcsv pada PHP untuk membaca data dari file .csv, dan menggunakan query INSERT untuk memasukkan data tersebut ke dalam database MySQL.
2. Apakah bisa melakukan import data dari Excel dengan menambahkan data baru dan mengupdate data yang ada sekaligus?
Jawab: Tentu bisa. Kita bisa menggunakan query REPLACE INTO untuk menggabungkan proses INSERT dan UPDATE menjadi satu query. Query tersebut akan memasukkan data baru jika tidak ada data dengan primary key yang sama, dan mengupdate data yang sudah ada jika primary key-nya sama.