Cara Impor File Excel ke Database MySQL dengan PHP

Halo sobat, pernahkah kamu memiliki file Excel yang berisi data penting seperti data alamat dan ingin langsung memasukkannya ke dalam MySQL database? Di artikel ini, saya akan memandu kamu langkah demi langkah untuk mengonversi file Excel menjadi data yang tersimpan di database menggunakan PHP. Kita akan menggunakan MySQLi dengan prepared statement agar proses insert data dilakukan dengan aman.

Format File Excel dan Contoh Data

File Excel yang akan kita impor sebaiknya berisi tabel dengan kolom-kolom data alamat. Misalnya, tabel tersebut memiliki kolom:
  • Nama: Nama lengkap.
  • Alamat: Alamat lengkap.
  • Kota: Kota tempat tinggal.
  • KodePos: Kode pos alamat tersebut.
Berikut adalah contoh 5 baris data yang bisa terdapat dalam file Excel:
Nama Alamat Kota KodePos
Budi Santoso Jl. Merdeka No. 10 Jakarta 10110
Siti Aminah Jl. Pahlawan No. 5 Bandung 40212
Andi Wijaya Jl. Sudirman No. 15 Surabaya 60241
Dewi Lestari Jl. Kartini No. 22 Semarang 50242
Rizky Pratama Jl. Mawar No. 7 Medan 20111
Pastikan header pada file Excel sesuai dengan nama kolom di atas, sehingga saat kita mengonversinya ke CSV, data dapat diproses dengan benar.

Persiapan

Sebelum memulai, pastikan sobat telah menyiapkan:
  • Server MySQL dengan database bernama data_alamat
  • PHP versi 5.6 ke atas (disarankan PHP 7.x)
  • Command line tool xlsx2csv untuk mengonversi file Excel (.xlsx) ke CSV
  • File Excel yang akan diimpor (misalnya, data_alamat.xlsx)

Contoh Program PHP

Berikut adalah contoh program PHP yang akan:
  1. Mencari file Excel terbaru di direktori tertentu.
  2. Mengonversi file Excel ke CSV menggunakan xlsx2csv.
  3. Membuat koneksi ke MySQL menggunakan MySQLi.
  4. Membuat tabel alamat di database data_alamat jika belum ada.
  5. Memasukkan data dari file CSV ke dalam tabel menggunakan prepared statement agar insert data dilakukan dengan aman.
Contoh kode:
<?php // Konfigurasi koneksi MySQL $host     = "localhost"; $user     = "root"; $password = "password"; // Ganti dengan password MySQL kamu $database = "data_alamat"; // Membuat koneksi menggunakan MySQLi $conn = new mysqli($host, $user, $password, $database); if ($conn->connect_error) {     die("Koneksi gagal: " . $conn->connect_error); } // Membuat tabel 'alamat' jika belum ada $createTable = "CREATE TABLE IF NOT EXISTS alamat (     id INT AUTO_INCREMENT PRIMARY KEY,     nama VARCHAR(255),     alamat TEXT,     kota VARCHAR(100),     kodepos VARCHAR(20) )"; if (!$conn->query($createTable)) {     die("Gagal membuat tabel: " . $conn->error); } // Fungsi untuk mendapatkan file Excel terbaru dari direktori function getLatestExcelFile($directory) {     $files = glob($directory . "*.xlsx");     if (empty($files)) return false;     usort($files, function($a, $b) {         return filemtime($b) - filemtime($a);     });     return $files[0]; } // Tentukan direktori file Excel $excelDir = "/path/to/excel/files/"; // Ganti dengan path direktori file Excel $latestFile = getLatestExcelFile($excelDir); if (!$latestFile) {     die("Tidak ada file Excel yang ditemukan!"); } echo "File yang diproses: $latestFile\n"; // Konversi file Excel ke CSV menggunakan xlsx2csv $csvFile = "/path/to/csv/output.csv"; // Ganti dengan path output CSV yang diinginkan $command = "xlsx2csv " . escapeshellarg($latestFile) . " > " . escapeshellarg($csvFile); system($command); echo "Perintah konversi: $command\n"; // Pastikan file CSV berhasil dibuat if (!file_exists($csvFile) || filesize($csvFile) == 0) {     die("File CSV kosong atau tidak ditemukan setelah konversi!"); } // Membuka file CSV dan memasukkan data ke database dengan prepared statement if (($handle = fopen($csvFile, "r")) !== FALSE) {     // Membaca header (asumsi baris pertama adalah header)     $header = fgetcsv($handle, 1000, ",");     // Menyiapkan prepared statement untuk insert data     $stmt = $conn->prepare("INSERT INTO alamat (nama, alamat, kota, kodepos) VALUES (?, ?, ?, ?)");     if (!$stmt) {         die("Gagal menyiapkan statement: " . $conn->error);     }     $stmt->bind_param("ssss", $nama, $alamat, $kota, $kodepos);     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {          // Asumsikan file CSV memiliki kolom: Nama, Alamat, Kota, KodePos (urutan kolom 0, 1, 2, 3)          if (count($data) < 4) continue;          $nama    = trim($data[0]);          $alamat  = trim($data[1]);          $kota    = trim($data[2]);          $kodepos = trim($data[3]);          // Eksekusi statement untuk setiap baris          if (!$stmt->execute()) {              echo "Error: " . $stmt->error . "\n";          }     }     fclose($handle);     $stmt->close();     echo "Data berhasil dimasukkan ke dalam database.\n"; } else {     die("Gagal membuka file CSV!"); } $conn->close(); ?> 
 
Jadi sobat, dengan menggunakan PHP bersama MySQLi dan prepared statement, kamu dapat dengan aman mengonversi file Excel menjadi data yang tersimpan di MySQL database. Proses ini sangat berguna untuk mengimpor data dalam jumlah besar atau secara rutin. Dengan format file Excel yang tepat dan contoh data seperti yang telah dijelaskan, sobat bisa dengan mudah menyesuaikan program ini sesuai kebutuhan. Semoga panduan ini bermanfaat dan membantu kamu dalam mengelola data dengan lebih efisien. Selamat mencoba dan terus eksplorasi dunia pemrograman!

Leave a Reply

Your email address will not be published. Required fields are marked *