Cara menggunakan phpspreadsheet codeigniter 4

Selamat datang di warungbelajar, dalam tutorial kali ini akan melanjutkan pembahasan dari seri tutorial belajar Codeigniter 3, pada part 25 kita akan membahas mengenai bagaimana cara untuk membuat report dalam bentuk excel dengan menggunakan PhpSpreadsheet di Codeigniter 3.

Untuk tutorial ini kita akan belajar membuat export data dalam bentuk excel, dan data itu kita ambil dari database, baik kita akan langsung mulai pembahasannya.

Install Codeigniter

Untuk langkah awal pastikan anda telah memiliki project codeigniter, untuk tutorial instalasi dari codeigniter, bisa melihat di tutorial kita sebelumnya : Cara Menginstall Codeigniter

Dalam contoh ini untuk folder project saya beri nama belajarcodeigniter

 

 

Setting Autoload Composer

Kita akan menginstall Phpspreadsheet  dengan menggunakan Composer, karena itu kita perlu mengaktifkan autoload untuk composer.

Silahkan buka file dengan nama application/config/config.php, kemudian isi bagian autoload composer menjadi seperti dibawah ini :

1

$config['composer_autoload'] = "vendor/autoload.php";

 

 

Install Phpspreadsheet dengan Composer

Pastikan anda sudah menginstall Composer, untuk instalasi Composer bisa download disini : Klik Disini

Berikutnya buka Command Prompt / Terminal, dan akses folder project codeigniter anda, dalam contoh ini adalah folder belajarcodeigniter, lalu tuliskan perintah seperti berikut ini :

1

composer require phpoffice/phpspreadsheet

Tunggu proses downloadnya, hingga selesai

Cara menggunakan phpspreadsheet codeigniter 4

Persiapkan database

Dalam contoh ini kita akan belajar untuk menampilkan data dari database, dan ditampilkan dalam bentuk Excel, sehingga kita perlu mempersiapkan database terlebih dahulu.

Dalam contoh ini kita buat database dengan nama db_siswa, dan kita juga membuat tabel siswa didalamnya dengan kolom sebagai berikut :

  • kd_siswa (Primary Key, Int, Auto Increment)
  • nama (Varchar 255)
  • kelas (Varchar 5)
  • jenis_kelamin (Enum (‘PRIA’,’WANITA’))
  • alamat (Varchar 255)

 

Berikutnya kita akan isi tabel dengan data sebagai berikut :

  • Data 1

kd_siswa(1), nama (Budi Hermawan), kelas (3MM1), jenis_kelamin(PRIA), alamat (Wonocolo, Surabaya)

  • Data 2

kd_siswa(2), nama (Cika Larasati), kelas (3MM1), jenis_kelamin(WANITA), alamat (Sedati, Sidoarjo)

 

disini kita tidak membahas detail teknis bagaimana membuat database dan tabel didalamnya ya.. anda bisa gunakan Query SQL berikut ini untuk dapat membuat database disertai tabelnya :

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

-- phpMyAdmin SQL Dump

-- version 5.0.2

-- https://www.phpmyadmin.net/

--

-- Host: 127.0.0.1

-- Generation Time: Jun 11, 2020 at 01:01 PM

-- Server version: 10.4.11-MariaDB

-- PHP Version: 7.4.5

 

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

START TRANSACTION;

SET time_zone = "+00:00";

 

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8mb4 */;

 

--

-- Database: `db_siswa`

--

CREATE DATABASE IF NOT EXISTS `db_siswa` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

USE `db_siswa`;

 

-- --------------------------------------------------------

 

--

-- Table structure for table `siswa`

--

 

CREATE TABLE `siswa` (

  `kd_siswa` int(11) NOT NULL,

  `nama` varchar(255) NOT NULL,

  `kelas` varchar(5) NOT NULL,

  `jenis_kelamin` enum('PRIA','WANITA') NOT NULL,

  `alamat` varchar(255) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

--

-- Dumping data for table `siswa`

--

 

INSERT INTO `siswa` (`kd_siswa`, `nama`, `kelas`, `jenis_kelamin`, `alamat`) VALUES

(1, 'Budi Hermawan', '3MM1', 'PRIA', 'Wonocolo, Surabaya'),

(2, 'Cika Larasati', '3MM1', 'WANITA', 'Sedati, Sidoarjo');

 

--

-- Indexes for dumped tables

--

 

--

-- Indexes for table `siswa`

--

ALTER TABLE `siswa`

  ADD PRIMARY KEY (`kd_siswa`);

 

--

-- AUTO_INCREMENT for dumped tables

--

 

--

-- AUTO_INCREMENT for table `siswa`

--

ALTER TABLE `siswa`

  MODIFY `kd_siswa` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

COMMIT;

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

 

Setting Database di Codeigniter

Berikutnya kita akan setting codeigniter agar dapat mengakses database, silahkan buka file application/config/autoload.php, lalu ubah code dibawah ini :

1

$autoload['libraries'] = array();

Menjadi

1

$autoload['libraries'] = array('database');

 

Berikutnya silahkan buka file application/config/database.php

lalu konfigurasi settingan database, seperti berikut ini :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

$db['default'] = array(

'dsn' => '',

'hostname' => 'localhost',

'username' => 'root',

'password' => '',

'database' => 'db_siswa',

'dbdriver' => 'mysqli',

'dbprefix' => '',

'pconnect' => FALSE,

'db_debug' => (ENVIRONMENT !== 'production'),

'cache_on' => FALSE,

'cachedir' => '',

'char_set' => 'utf8',

'dbcollat' => 'utf8_general_ci',

'swap_pre' => '',

'encrypt' => FALSE,

'compress' => FALSE,

'stricton' => FALSE,

'failover' => array(),

'save_queries' => TRUE

);

dalam contoh diatas saya hanya lakukan konfigurasi pada :

  • hostname : localhost
  • username : root
  • password : saya kosongi
  • database : db_siswa

 

 

Membuat Model

Karena nanti kita melakukan komunikasi dengan database sehingga kita perlu membuat model, silahkan buat model dengan nama Siswa_model.php didalam folder application/models untuk codenya adalah sebagai berikut :

1

2

3

4

5

6

7

8

9

10

11

<?php defined('BASEPATH') OR die('No direct script access allowed');

 

class Siswa_model extends CI_Model {

 

     public function getAll()

     {

  $data_siswa = $this->db->get('siswa')->result();

          return $data_siswa;

     }

 

}

Keterangan :

  • Kita buat class dengan nama Siswa_model dengan extends class CI_Model.
  • lalu didalamnya kita buat method getData, didalamnya ada perintah untuk get data ditabel siswa (Line 7) dan kita return hasil data tersebut (Line 8)

 

 

Membuat Controller

Berikutnya kita akan membuat controller dimana didalamnya kita akan buat method excel yang nantinya akan kita akses melalui browser untuk menampilkan laporan Excel, dengan menggunakan Library PHPSpreadsheet

buat controller dengan nama Siswa.php didalam folder application/controllers/Siswa.php, dengan code seperti berikut ini :

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

<?php

 

use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

class Siswa extends CI_Controller{

 

public function excel()

{

$this->load->model('siswa_model');

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue('A1', 'No');

$sheet->setCellValue('B1', 'Nama');

$sheet->setCellValue('C1', 'Kelas');

$sheet->setCellValue('D1', 'Jenis Kelamin');

$sheet->setCellValue('E1', 'Alamat');

$siswa = $this->siswa_model->getAll();

$no = 1;

$x = 2;

foreach($siswa as $row)

{

$sheet->setCellValue('A'.$x, $no++);

$sheet->setCellValue('B'.$x, $row->nama);

$sheet->setCellValue('C'.$x, $row->kelas);

$sheet->setCellValue('D'.$x, $row->jenis_kelamin);

$sheet->setCellValue('E'.$x, $row->alamat);

$x++;

}

$writer = new Xlsx($spreadsheet);

$filename = 'laporan-siswa';

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment;filename="'. $filename .'.xlsx"');

header('Cache-Control: max-age=0');

$writer->save('php://output');

}

}

?>

Keterangan :

  • Pada line 3 dan 4 kita load library phpspreadsheet untuk keperluan mencetak laporan berupa excel.
  • Line 6 kita buat class dengan nama Siswa dengan extends class CI_Controller
  • Line 8 kita buat method dengan nama excel, nah di method ini kita akan buat report berupa excel.
  • Line 10 kita load model dengan nama siswa_model
  • Line 11 kita buat object dengan nama $spreadsheet dari class Spreadsheet
  • Line 12 kita buat Sheet Active, dimana kita menjadikannya di variabel $sheet
  • Line 13 kita buat tulisan pada kolom A1 dengan isi text “No
  • Line 14 kita buat tulisan pada kolom B1 dengan isi text “Nama
  • Line 15 kita buat tulisan pada kolom C1 dengan isi text “Kelas
  • Line 16 kita buat tulisan pada kolom D1 dengan isi text “Jenis Kelamin
  • Line 17 kita buat tulisan pada kolom E1 dengan isi text “Alamat
  • Line 19 kita akses method getAll didalam siswa_model dan kita simpan di dalam variabel $siswa
  • Line 20 kita buat variabel $no untuk menyimpan nomor urut dari data siswa yang ditampilkan nantinya
  • Line 21 kita buat variabel $x untuk menyimpan no baris dari masing – masing data yang nantinya akan ditampilkan
  • Line 22 kita extract data di variabel $siswa, dan setiap perulangannya akan diwakili variabel $row.
  • Line 24 kita tampilkan no urut data saat di excel, disitu kita tuliskan A,$x++ artinya menampilkan sesuai nama cell yang ada, variabel $x dimulai dari angka 2, sehingga data siswa dimulai dari cell A2 untuk bagian Nomor, dan untuk nomor urut menggunakan nilai di variabel $no
  • Line 25 kita tampilkan nilai kolom nama, disitu kita tuliskan B,$x++ artinya menampilkan sesuai nama cell yang ada, variabel $x dimulai dari angka 2, sehingga data untuk nama ditampilkan mulai dari cell B2
  • Line 26 kita tampilkan nilai kolom kelas, disitu kita tuliskan C,$x++ artinya menampilkan sesuai nama cell yang ada, variabel $x dimulai dari angka 2, sehingga data untuk kelas ditampilkan mulai dari cell C2
  • Line 27 kita tampilkan nilai kolom jenis_kelamin, disitu kita tuliskan D,$x++ artinya menampilkan sesuai nama cell yang ada, variabel $x dimulai dari angka 2, sehingga data untuk jenis_kelamin ditampilkan mulai dari cell D2
  • Line 28 kita tampilkan nilai kolom alamat, disitu kita tuliskan E,$x++ artinya menampilkan sesuai nama cell yang ada, variabel $x dimulai dari angka 2, sehingga data untuk alamat ditampilkan mulai dari cell E2
  • Line 29 kita membuat increment pada variabel $x yang artinya setiap record yang ditampilkan, akan menambahkan + 1 pada variabel $x, itu yang membuat setiap data siswa akan berganti baris
  • Line 30 kita membuat object dengan nama $writer dengan class Xlsx dengan nilai di variabel $spreadsheet
  • Line 31 kita set nama file excel yang akan diexport
  • Line 34 – 36 kita buat header dari file excel
  • Line 38 kita export data excel yang telah kita set sebelumnya.

 

 

Melakukan testing menampilkan laporan Excel

Berikutnya kita akan coba mengakses method excel di controller siswa untuk menampilkan laporan Excel, dengan alamat : localhost/belajarcodeigniter/index.php/siswa/excel

Cara menggunakan phpspreadsheet codeigniter 4

maka akan ditampilkan laporan berupa file Excel, karena kita menggunakan library phpspreadsheet

Untuk teman teman yang ingin download source code hasil : Download Source Code

 

Baik sekian dulu tutorial kali ini, kita sudah belajar untuk membuat report Excel dengan menggunakan PHPSpreadsheet di Codeigniter 3, jika ada yang ingin didiskusikan silahkan di kolom komentar

 


ANDA INGIN SERIUS BELAJAR FRAMEWORK CODEIGNITER ?

Seperti yang anda ketahui bahwa saat ini skill di bidang pemrograman sangatlah dibutuhkan, salah satunya adalah pemograman PHP.
Untuk anda yang ingin serius belajar pemrograman PHP, Khususnya menggunakan Framework PHP Codeigniter, Warung Belajar Memiliki Beberapa Paket Tutorial yang bisa membantu anda dalam belajar menggunakan Framework PHP Codeigniter, dari mulai step – step dasar hingga mampu membuat aplikasi berbasis web dengan menggunakan Framework PHP Codeigniter.

Paket Tutorial ini berisi video tutorial belajar pemrograman berbahasa indonesia, cocok sekali untuk anda yang sedang belajar Framework PHP Codeigniter, bahkan untuk orang awam sekalipun.

Paket Tutorial ini juga dilengkapi dengan study kasus yang akan mempermudah pemahaman anda dalam belajar pemrograman, Mari berinvestasi untuk menambah skill dalam menguasai Framework PHP Codeigniter