Skip to content Skip to sidebar Skip to footer

Widget Atas Posting

Import Data Excel dengan Codeigniter 4 menggunakan PHPSpreadsheet

Dalam aplikasi pasti ada form untuk input data, dalam form tersebut pasti data yang di input hanya satu-satu atau kita tidak bisa menginput data banyak dalam 1 inputan. Bagaimana cara agar kita dapat menginput banyak data  dalam 1 kali input data langsung tersimpan dalam database ? Caranya adalah dengan membuat fitur upload data dengan menggunakan excel. 

Pada artikel kali ini admin akan membahas bagaimana cara membuat import data dengan excel di Codeigniter 4 menggunakan library PHPSpreadsheet untuk membaca file excelnya. Kenapa admin kali ini menggunakan library PHPSpreadsheet tidak menggunakan library PHPExcel. Karena admin menggunakan PHP Versi 8 maka admin menggunakan library PHPSpreadsheet Perlu kita ketahui juga bahwa PHPExcel sudah tidak bisa berjalan pada PHP Versi 8.

Cara Membuat Import Data dengan Excel di Codeigniter 4

Langkah pertama yang perlu kita lakukan adalah menginstall Codeigniter 4 dalam laptop/komputer kita. Jika belum tau caranya silahkan klik Cara Install Codeigniter 4.

Langkah yang kedua silahkan anda install library PHPSpreadsheet melalui composer. Silahkan ketikan kode berikut ini pada Composer anda :

composer require phpoffice/phpspreadsheet

Jika berhasil maka akan muncul folder baru yang bernama vendor dalam folder root Codeigniter 4 anda seperti gambar dibawah ini:


Jika codeigniter 4 dan library PHPSpreadsheet sudah terinstall saatnya kita membuat databasenya silahkan anda buat database dengan nama siswa kemudian buat tabel siswa yang berisi field Nis, NamaSiswa dan Alamat.

Membuat Koneksi Database

Langkah selanjutnya adalah membuat koneksi database di codeigniter 4. Dalam pembuatan koneksi database ada dua acara yaitu dengan mengedit file Database.php (seperti Codeigniter 3) yang tersimpan dalam folder app/config atau dengan mengedit filename env menjadi .env yang ada di folder root. Pada tutorial kali ini admin menggunakan file .env . Caranya silahkan rename file env menjadi .env (tambahkan titik di depannya) kemudian buka di teks editor anda cari kode seperti berikut ini dan edit sesuaikan dengan koneksi dan nama database anda.
 database.default.hostname = localhost
 database.default.database = siswa
 database.default.username = root
 database.default.password = 
 database.default.DBDriver = MySQLi

masih dalam file .env jangan lupa untuk merubah CI_ENVIRONMENT yang awalnya production menjadi development

Membuat Model

Setelah membuat koneksi database langkah selanjutnya adalah membuat model. Silahkan anda buat file baru kemudian simpan dalam folder app/Models beri nama ModelSiswa.php kemudian masukan kode berikut ini :
<?php namespace App\Models;
use CodeIgniter\Model;
class ModelSiswa extends Model
{
	protected $table = 'siswa';
	protected $primaryKey = 'NIS';
	protected $allowedFields =['NamaSiswa','Alamat'];
}

Membuat Controller

Controller bisa disebut juga sebagai jembatan antara model dan view. Di sini kita akan membuat file baru dengan nama Siswa.php kemudian simpan di folder app/Controller. didalam file Siswa.php nantinya kita akan membuat dua fungsi yaitu fungsi yang pertama index yang berfungsi untuk menampilkan data dan fungsi kedua yaitu simpanExcel yang nantinya digunakan untuk menyimpan data dari excel ke dalam database. Silahkan tulis kode dibawah ini kedalam file Siswa.php 

<?php namespace App\Controllers;
use App\Models\ModelSiswa;
class Siswa extends BaseController
{
	public function __construct(){
		$this->siswa = new ModelSiswa();
	}
	public function index(){
		$data['Siswa'] = $this->siswa->findAll();
		echo view('data_siswa',$data);
	}
	public function simpanExcel()
		{
			$file_excel = $this->request->getFile('fileexcel');
			$ext = $file_excel->getClientExtension();
			if($ext == 'xls') {
				$render = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
			} else {
				$render = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
			}
			$spreadsheet = $render->load($file_excel);
	
			$data = $spreadsheet->getActiveSheet()->toArray();
			foreach($data as $x => $row) {
				if ($x == 0) {
					continue;
				}
				
				$Nis = $row[0];
				$NamaSiswa = $row[1];
				$Alamat = $row[2];
	
				$db = \Config\Database::connect();

				$cekNis = $db->table('siswa')->getWhere(['Nis'=>$Nis])->getResult();

				if(count($cekNis) > 0) {
					session()->setFlashdata('message','<b style="color:red">Data Gagal di Import NIS ada yang sama</b>');
				} else {
	
				$simpandata = [
					'Nis' => $Nis, 'NamaSiswa' => $NamaSiswa, 'Alamat'=> $Alamat
				];
	
				$db->table('siswa')->insert($simpandata);
				session()->setFlashdata('message','Berhasil import excel'); 
			}
		}
			
			return redirect()->to('/siswa');
		}
	
} 

Membuat View

Silahkan buat file baru dengan nama data_siswa.php simpan dalam folder app/Views kemudian tulis kode berikut ini :

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Import Excel Codeigniter</title>
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
	<div class="container mt-3">
		<?php
		if(session()->getFlashdata('message')){
		?>
			<div class="alert alert-info">
				<?= session()->getFlashdata('message') ?>
			</div>
		<?php
		}
		?>
		<form method="post" action="/siswa/simpanExcel" enctype="multipart/form-data">
			<div class="form-group">
				<label>File Excel</label>
				<input type="file" name="fileexcel" class="form-control" id="file" required accept=".xls, .xlsx" /></p>
			</div>
			<div class="form-group">
				<button class="btn btn-primary" type="submit">Upload</button>
			</div>
		</form>
		<table class="table table-bordered">
			<thead>
				<tr>
					<th>NIS</th>
					<th>Nama Siswa</th>
					<th>Alamat Siswa</th>
				</tr>
			</thead>
			<tbody id="contactTable">
			<?php
			if(!empty($Siswa)){
				foreach($Siswa as $dt){
				?>
					<tr>
						<td><?= $dt['NIS'] ?></td>
						<td><?= $dt['NamaSiswa'] ?></td>
						<td><?= $dt['Alamat'] ?></td>
					</tr>
				<?php
				}
			}else{
			?>
				<tr>
					<td colspan="3">Tidak ada data</td>		
				</tr>
			<?php
			}
			?>
			</tbody>
		</table>
	</div>
</body>
</html>

Pada views diatas kita sudah membuat tampilan untuk form upload excel yang diarahkan ke fungsi simpanExcel yang ada di controllers dan juga kode untuk menampilkan data dari database.

Saat membuat form upload file jangan lupa untuk mencantumkan attribut berikut enctype="multipart/form-data”.

Jalankan codeigniter 4 masuk ke direktori root Codeigniter 4 melalui terminal atau CMD ketikan php spark serve. Kemudian buka broser ketikan alamat ini : http://localhost:8080/index.php/siswa

Format excel yang diupload seperti yang ada digambar berikut ini :

Jika berhasil maka tampilannya akan seperti dibawah ini :

Sekian artikel kali ini jika ada yang belum jelas dan perlu ditanyakan silahkan kita diskusikan didalam kolom komentar dibawah ini.

6 comments for "Import Data Excel dengan Codeigniter 4 menggunakan PHPSpreadsheet"

  1. Note tambahan, tutorial diatas menggunakan PHP 7.4 (saya mencoba di PHP 8 dan PHP 7.3 mengalami bberapa kali error), semoga bermanfaat

    ReplyDelete
  2. Untuk CodeIgniter 4.2.1

    Error Call to a member function getClientExtension() on null

    tolong di Update

    ReplyDelete
  3. php office nya ga bisa muncul di tab phpnya

    ReplyDelete
  4. Column 'Nis' cannot be null

    ReplyDelete