Postingan lainnya
Import data excel ke database berhasil, namun terdapat data yang kosong di bagian akhir
Halo teman-teman koding mohon bantuan nya , saya mempunyai kendala pada Fitru Import Data dari Excel, setelah berhasil ter-impor namun data yang kosong ikut terimport seperti ini :
1. Gambar Excel
Screenshot 2022-12-27 222039.png
2. Tampilan Database nya
Screenshot 2022-12-27 222101.png
3. Codingan di Controller seperti ini .
public function upload()
{
if(isset($_FILES["file"]["name"])){
$file_tmp = $_FILES['file']['tmp_name'];
$file_name = $_FILES['file']['name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$object = PHPExcel_IOFactory::load($file_tmp);
foreach($object->getWorksheetIterator() as $worksheet){
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
for($row=7; $row<=$highestRow; $row++){
$mapel = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
$kompetensi = $worksheet->getCellByColumnAndRow(2, $row)->getValue();
$tingkat = $worksheet->getCellByColumnAndRow(3, $row)->getValue();
$semester = $worksheet->getCellByColumnAndRow(4, $row)->getValue();
$kode = $worksheet->getCellByColumnAndRow(5, $row)->getValue();
$isikd = $worksheet->getCellByColumnAndRow(6, $row)->getValue();
$status = $worksheet->getCellByColumnAndRow(7, $row)->getValue();
$data[] = array(
'mapel_kd' => $mapel,
'kompetensi' => $kompetensi,
'tingkat' => $tingkat,
'semester' => $semester,
'kode' => $kode,
'isi_kd' => $isikd,
'status_kd' => $status,
);
}
}
$this->db->insert_batch('tb_kdpengetahuan', $data);
$message = array(
'message' => '<div class="alert alert-success">Import data berhasil </div>'
);
$this->session->set_flashdata($message);
redirect('kd_pengetahuan');
}else{
$message = array(
'message' => '<div class="alert alert-danger">Import data tidak berhasil </div>'
);
$this->session->set_flashdata($message);
redirect('kd_pengetahuan');
}
}
Mohon pencerahannya teman-teman karena ini masuk ke tampilan datatables di front end.
Terima kasih
3 Jawaban:
<div>Saya tidak menemukan dokumentasi dari PHPExcel.<br><br>Sekilas info, PHPExcel kalau dilihat di reponya sudah diarchive, sesuai rekomendasiknya coba menggunakan <a href="https://github.com/PHPOffice/PhpSpreadsheet">PHPSpreadsheet</a> untuk bermain dengan Excel di PHP<br><br>Tips untuk kasus ini:<br>1. cek di mana loop yang semestinya tidak "berulang" perhatikan sejak foreach pertama, mungkin ada yang jalan berkali kali<br>2. sebelum memasukkan data cek jika data kosong, tidak perlu dimasukkan ke database<br><br>Tips yang kedua, hanya jika tidak menemukan masalah pertama</div>
Tanggapan
PHPExcel sudah di load dr library nya kak cuma saya lupa ss ada d head function controller nya.. Btw thanks tips nya akan sy coba kak
Jawaban Terpilih
<div>File excel itu, biarpun baris-baris di bawah terlihat kosong, tapi akan tetap diperlakukan sebagai highest row index, kalau anda pernah mengisi data di sana kemudian dihapus. Coba tekan Ctrl+End di file Excel anda, dan lihat cursornya berakhir di mana.<br><br>Saran saya, sorot dan copy data yang diinginkan (A1 sampai H12), lalu paste di file baru dan simpan. File itu lah yang diberikan ke PHP untuk diolah.</div>
Tanggapan
Ohh begitu oke baru tau saya soal itu karena memang saya menggunakan hasil paste file format sebelumnya. Terima kasih info nya kak, akan saya coba saran dan masukannya.
<div>Kalo saya biasanya kasih validasi sebelum di masukkan ke variabel array. Jadi memastikan bahwa nilainya itu ada dan ga kosong. Mungkin bisa dicoba seperti ini :<br><br></div><pre>for($row=7; $row<=$highestRow; $row++) { $mapel = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); $kompetensi = $worksheet->getCellByColumnAndRow(2, $row)->getValue(); $tingkat = $worksheet->getCellByColumnAndRow(3, $row)->getValue(); $semester = $worksheet->getCellByColumnAndRow(4, $row)->getValue(); $kode = $worksheet->getCellByColumnAndRow(5, $row)->getValue(); $isikd = $worksheet->getCellByColumnAndRow(6, $row)->getValue(); $status = $worksheet->getCellByColumnAndRow(7, $row)->getValue();
// Memastikan setiap variabelnya memiliki value, sebelum dimasukkan ke variabel array
if (
$mapel !== '' &amp;&amp;
$kompetensi !== '' &amp;&amp;
$tingkat !== '' &amp;&amp;
$semester !== '' &amp;&amp;
$kode !== '' &amp;&amp;
$isikd !== '' &amp;&amp;
$status !== ''
) {
$data[] = array(
'mapel_kd' =&gt; $mapel,
'kompetensi' =&gt; $kompetensi,
'tingkat' =&gt; $tingkat,
'semester' =&gt; $semester,
'kode' =&gt; $kode,
'isi_kd' =&gt; $isikd,
'status_kd' =&gt; $status,
);
}
}</pre><div><br>Semoga berhasil.</div>