Cara menggunakan phpspreadsheet codeigniter import

Initekno.com – Berbicara mengenai import excel, maka kita akan berbicara tentang cara efektif untuk memasukkan data yang berjumlah banyak, ratusan, ribuan bahkan jutaan, atau data yang selama ini hanya diolah menggunakan excel atau google spreadsheet tidak terbuang sia-sia hanya karena migrasi keprogram baru.. Nah permasalahannya bagaimana cara memasukkan data berjumlah besar itu sekaligus?.. tentu kita akan mencari solusi dari permasalahan itu.

Biasanya dalam dunia perkantoran pengolahan data menggunakan excel tidak terelakkan lagi. Semisal kantor kamu mempunyai program baru dan semua data lama diambil dan dimasukkan dalam program tersebut. Maka dari itu kita menggunakan format .csv untuk membuat ini bekerja dalam kodingan.

Ok, langsung saja ikuti cara-cara berikut untuk membuat fitur impor tersebut dalam codeigniter 4.

  • Konfigurasi Awal
  • Membuat Tabel
  • Buat File Csv
  • Membuat Controller
  • Membuat Views
  • Buat Routing
  • Testing

Konfigurasi Awal

Pertama silahkan instal dan jalankan XAMPP control panel pada komputer kamu, dan ubah beberapa kode berikut ini pada file php.ini file itu ada pada direktori C:\xampp\php

cari kode ini pada baris 925.

;extension=gd

//ubah menjadi

extension=gd

Kamu hanya perlu menghilangkan tanda titik koma (;) ini bertujuan agar nantinya kamu bisa melakukan instalasi phpspreadsheet

dan untuk perintah lengkapnya silahkan tuliskan berikut. kita akan menggunakan library phpoffice untuk membuat fitur impor dan export data dari excel. Untuk pembahasan exsport pada artikel berikut ini :

Tutorial Codeigniter 4 Bahasa Indonesia – Exspor File Menjadi Excel

Jalankan perintah berikut untuk mengunduh dan instal paket phpoffice.

composer require phpoffice/phpspreadsheet

Membuat Tabel

Sekarang saatnya kamu membuat satu tabel dengan nama tabel_mahasiswa atau nama yang kamu inginkan. Tuliskan struktur tabel itu seperti berikut ini.

MariaDB[ci4demo]>desc tabel_mahasiswa;

+-----------+--------------+------+-----+---------------------+-------------------------------+

|Field     |Type         |Null| Key|Default             |Extra                         |

+-----------+--------------+------+-----+---------------------+-------------------------------+

|id        | bigint(20)   |NO   |PRI|NULL                |auto_increment                |

| nik       |varchar(20)  |NO   |     |NULL                |                               |

|nama      |varchar(100)|NO   |     |NULL                |                               |

|email     |varchar(255)|NO   |     |NULL                |                               |

|nohp      |varchar(16)  |NO   |     |NULL                |                               |

|jurusan   |varchar(50)  |NO   |     |NULL                |                               |

|jk        |varchar(10)  |NO   |     |NULL                |                               |

|umur      |varchar(20)  |NO   |     |NULL                |                               |

|create_at|timestamp    |NO   |     |current_timestamp()|on update current_timestamp()|

+-----------+--------------+------+-----+---------------------+-------------------------------+

9 rows in set(0.011sec)

Tabel diatas akan kita gunakan untuk menyimpan data dari file csv.

Buat File Csv

Kemudian buka google drive dan buat satu spreadsheet baru dengan nama tabel_mahasiswa. Struktur tabel dalam spreadsheet harus sama seperti tabel mahasiswa di mysql.

Cara menggunakan phpspreadsheet codeigniter import

Kemudian download filenya dengan format .csv, untuk lebih jelasnya lihat gambar berikut ini.

Cara menggunakan phpspreadsheet codeigniter import

Membuat Controller

Sekarang buat file controller dengan nama Mahasiswa_controller.php simpan pada direktori berikut ini. Atau kamu bisa juga memanfaatkan php spark untuk membuat controller.

php spark make:controller MahasiswaController

app\Controllers\MahasiswaController.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

<?php

namespace App\Controllers;

use App\Controllers\BaseController;

classMahasiswaControllerextendsBaseController

{

    public$db;

    public function __construct()

    {

        $this->db=\Config\Database::connect();

        $data=$this->db->table("tabel_mahasiswa")->get()->getResult();

        return view('mahasiswa_view',[

            "mahasiswalistdata"=>$data

        ]);

    }

    public function uploadmhs()

    {

        if($this->request->getMethod()=="post"){

            $file= $this->request->getFile("file");

            $file_name=$file->getTempName();

            $mhs=array();

            $csv_data =array_map('str_getcsv',file($file_name));

            if(count($csv_data)>0){

                $index =0;

                foreach($csv_data as$data){

                    if($index> 0){

                        $mhs[]=array(

                            "nik"=> $data[1],

                            "nama"=>$data[2],

                            "email" =>$data[3],

                            "nohp"=>$data[4],

                            "jurusan" =>$data[5],

                            "jk"=>$data[6],

                            "umur" =>$data[7],

                        );

                    }

                    $index++;

                }

                $builder=$this->db->table('tabel_mahasiswa');

                $builder->insertBatch($mhs);

                $session=session();

                $session->setFlashdata("success","data csv berhasil diupload");

                return redirect()->to(base_url('mahasiswaok'));

            }

        }

        return view("mahasiswa_view");

    }

}

Membuat Views

Untuk view berisi form untuk upload file csv dan menampilkan data yang sudah diupload. Buat file baru dengan nama mahasiswa_view.php simpan pada direktori berikut :

app\Views\mahasiswa_view.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

<!DOCTYPE html>

<html lang="en"dir="ltr">

  <head>

    <meta charset="utf-8">

    <title>DATA MAHASISWA</title>

    <link href="https://cdn.jsdelivr.net/npm//dist/css/bootstrap.min.css"rel="stylesheet">

    <!--font google-->

    <link rel="preconnect"href="https://fonts.gstatic.com">

    <link href="https://www.initekno.com/cloudme.fonts.googleapis.com/css2?family=Lexend&display=swap"rel="stylesheet">

    <style>

      body{

        font-family:'Lexend',sans-serif;

      }

    </style>

  </head>

  <body>

    <div class="container">

<?php

  if(session()->get("success")){?>

    <div class="alert alert-success"role="alert">

      <?php echosession()->get("success");?>

    </div>

  <?php

  }

?>

<form method="post"action="<?php echosite_url('mahasiswaok')?>"enctype="multipart/form-data">

    <p>Cari file.csv-<input type="file" name="file"required/></p>

    <p><button type="submit"class="btn btn-sm btn-success">Upload</button></p>

</form>

<div class="card">

  <div class="card-header">

    DATA MAHASISWA

  </div>

  <div class="card-body">

    <table class="table table-hover table-sm table-bordered">

        <thead class="table-dark">

            <tr>

                <th>NIK</th>

                <th>NAMA</th>

                <th>EMAIL</th>

                <th>NOHP</th>

                <th>JURUSAN</th>

                <th>GENDER</th>

                <th>UMUR</th>

            </tr>

        </thead>

        <tbody>

        <?php

            if(count($mahasiswalistdata)>0){

                foreach($mahasiswalistdata as$index=>$data){

                    ?>

                    <tr>

                        <td><?= $data->nik?></td>

                        <td><?=$data->nama?></td>

                        <td><?=$data->email?></td>

                        <td><?= $data->nohp?></td>

                        <td><?=$data->jurusan?></td>

                        <td><?=$data->jk?></td>

                        <td><?= $data->umur?></td>

                    </tr>

                    <?php

                }

            }

        ?>

        </tbody>

    </table>

  </div><!--akhir card body-->

</div><!--akhir card-->

</div><!--akhir container-->

</body>

</html>

Buat Routing

Sekarang buat routing untuk mahasiswa, letakkan seperti biasa dibawah route Home::index

app\Config\Routes.php

// We get a performance increase by specifying the default

// route since we don't have to scan directories.

$routes->get('/','Home::index');

//mahasiswa Routes

$routes->match(["get","post"],"mahasiswaok", "MahasiswaController::uploadmhs");

Testing

hidupkan server development dengan cara ketikkan perintah berikut.

Berikut adalah gambaran jika import csv berhasil, maka akan muncul pesan “data csv berhasil diupload”. Untuk URL yaitu localhost:8080/mahasiswaok

Cara menggunakan phpspreadsheet codeigniter import

Selesai…

Gampang sekali bukan. Pada artikel selanjutnya kita akan membahas tentang export data menjadi laporan excel. Tujuan artikel ini dibuat adalah, migrasi dari data excel ke web. Membuat kamu mudah untuk melakukan entri data dalam jumblah besar, itu aja sih, yang lain silahkan pikir sendiri manfaatnya. Silahkan dikembangkan sendiri..

Selanjutnya kita akan belajar exsport file menjadi excel

Tutorial Codeigniter 4 Bahasa Indonesia – Exspor File Menjadi Excel