Muka menggunakan import excel phpspreadsheet

https. //codingrakitan. blogspot. com/2020/12/cara-import-data-dari-excel-ke-database. htmlMenginput satu kesatuan data ke dalam database merupakan hal yang melelahkan apalagi ketika data yang di input berjumlah ratusan atau bahkan ribuan. Untuk mengatasi hal ini bisa menggunakan file excel, dimana terlebih dahulu data di buat dalam bentuk excel kemudian di upload ke WEB yang nantinya akan otomatis di masukkan ke dalam database

Pada postingan kali ini menggunakan framework Codeigniter dan menggunakan library PhpSpreadsheet. Jadi sebelum memulai bergelut dengan pembuatan, silahkan download terlebih dahulu library PhpSpreadsheet dengan menggunakan bantuan composer. Ketikkan perintah dibawah untuk mendownlaod

composer require phpoffice/phpspreadsheet


Berikut adalah contoh penggunaan Import Data Dari Excel Ke Database Menggunakan Codeigniter, dimana pada contoh ini menggunakan struktur database seperti pada gamabar






<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Csv;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;

class Contoller extends CI_Controller {

public function aksi()
{
$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['file']['name']) && in_array($_FILES['file']['type'], $file_mimes)) {

$arr_file = explode('.', $_FILES['file']['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['file']['tmp_name']);

$sheetData = $spreadsheet->getActiveSheet()->toArray();

for($i = 1;$i < count($sheetData);$i++)
{
$nama = $sheetData[$i]['0'];
$username = $sheetData[$i]['1'];
$password = $sheetData[$i]['2'];

$nra_fix = str_replace(' ', '', $nra);


$ar = array(
'nama' => $nama,
'username' => $username,
'password' => $password
);

$a = $this->Modelku->get('user', "username='$username'")->result_array();
if (count($a)==0) {
$this->Modelku->insert('user', $ar);
}
}

}
}
}
Perlu diperhatikan kode di atas menggunakan sebuah model dengan nama "Modelku", jadi silahkan buat model dengan nama yang sama terlebih dahulu kemudian tambahkan fungsi berikut.

function insert($table, $data)
{
	$this->db->insert($table,$data);
	return $this->db->insert_id();
}
function get($tabel, $where)
{
	$this->db->select("*");
	$this->db->from($tabel);
	$this->db->where($where);
	return $this->db->get();

}

Bagikan artikel ke

FacebookGoogle+Twitter

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 ? .  

Muka menggunakan import excel phpspreadsheet

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 dari Excel dari Codeigniter 4

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

Langkah 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

Muka menggunakan import excel phpspreadsheet


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


Muka menggunakan import excel phpspreadsheet

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. lingkungan. 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 produksi menjadi pengembangan

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 Pengontrol

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 atribut berikut enctype="multipart/form-data"

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

Format excel yang diupload seperti yang ada digambar berikut ini

Muka menggunakan import excel phpspreadsheet

Jika berhasil maka tampilannya akan seperti dibawah ini

Muka menggunakan import excel phpspreadsheet

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