Membuat Export File Excel Dengan Codeigniter

Created at by Aris Munandar

Pada tutorial kali ini kita akan membahas tentang bagaimana cara membuat export file excel dengan codeigniter, export disini bisa berbagai format seperti xls, csv dan pdf, dimana kita akan menggunakan library pihak ketiga yang sudah siap digunakan.

Fungsi export file dengan codeigniter ini sangat berguna bagi kita sebagai developer dalam membuat sebuah sistem berbasis web, karna fungsi export file excel adalah fitur yang wajib ada didalam sebuah sistem entah itu dalam modul laporan atau semacamnya tergantung kebutuhan sistem yang akan kita buat.

Didalam tutorial export file dengan codeigniter ini kita akan menggunakan PHPOffice/Spreadsheet sehingga ada tools yang mesti disediakan yaitu composer, fungsi composer ini untuk install PHPOffice/Spreadsheet karena kita tidak bisa hanya dengan mendownload filenya saja.

Membuat Export File Excel Dengan Codeigniter

Pertama-tama yang perlu kita siapkan adalah tentu saja framework codeigniter dan yang sudah dilakukan konfigurasi sesuai dengan konfigurasi server dan database pada step ke 2 dibawah ini.

Step 1: Install PHPOffice/PHPSpreadsheet

Pada step pertama buatlah folder dengan nama phpoffice di folder Documents atau dimana saja yang menurut anda mudah untuk di akses dengan syarat diluar folder codeigniter. Setelah itu masuk ke folder phpoffice yang tadi anda buat lalu buka CMD (Windows) atau Terminal (Linux/Mac) lalu masuk ke folder phpoffice tersebut kemudian jalankan perintah dibawah ini.

composer require phpoffice/phpspreadsheet

Jika berhasil maka di console anda akan terlihat seperti gambar dibawah ini.

export file dengan codeigniter

Silakan cek folder phpoffice setelah dijalankan perintah install PHPOffice tersebut maka seharusnya akan ada sebuah folder dengan nama vendor didalam folder phpoffice tadi.

Selanjutnya pindahkan folder phpoffice tersebut kedalam folder codeigniter anda yaitu didalam folder /application/third_party.

Step 2: Menyiapkan database dan tabel beserta data sample

Pada step kedua ini kita akan membuat sebuah database dan tabel beserta data yang sudah saya siapkan, data tersebut akan kita gunakan sebagai contoh export excel, csv, maupun pdf.

Pertama buatlah sebuah database dengan nama pengguna seperti query dibawah ini.

CREATE DATABASE tutorial_export_codeigniter

Selanjutnya membuat tabel dengan nama pengguna.

CREATE TABLE pengguna(
     id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
     nama VARCHAR(50) NOT NULL,
     umur INT(3) NOT NULL,
     tanggal_lahir DATETIME,
     jenis_kelamin VARCHAR(10)
);

Dan yang terakhir memasukan data ke dalam tabel tersebut, berikut ini query data yang akan kita masukan.

INSERT INTO pengguna(nama, umur, tanggal_lahir, jenis_kelamin) VALUES
('Aris Munandar', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Aditya', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Budi Santoso', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Ramdhoni', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Ahmad', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Iqbal Iskandar', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Sofia', 26, '1993-06-03 00:00:00', 'Perempuan'),
('Azzahra', 26, '1993-06-03 00:00:00', 'Perempuan'),
('Tony Stark', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Peter Parker', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Jimmy Neutron', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Rudy Tabootie', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Hey Arnold', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Gerald', 26, '1993-06-03 00:00:00', 'Lelaki'),
('Spongebob', 26, '1993-06-03 00:00:00', 'Lelaki');

Step 3: Membuat model untuk mengambil data dari database

Setelah database kita siapkan maka selanjutnya kita perlu membuat model codeigniter untuk mengambil data dari database yang tadi telah kita siapkan.

Buatlah sebuah file dengan nama Export_model.php didalam folder /application/models lalu masukan kode dibawah ini.

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

class Export_model extends CI_Model {

     public function getAll()
     {
          $this->db->select('*');
          $this->db->from('pengguna');

          return $this->db->get();
     }

}Code language: HTML, XML (xml)

Kode model diatas berfungsi untuk mengambil seluruh data yang ada didalam tabel pengguna, query tersebut sama dengan query sql seperti dibawah ini.

SELECT * FROM pengguna

Hanya saja kita dipermudah dengan dengan fitur Active Record yang ada di codeigniter.

Step 4: Membuat controller untuk menjalankan fungsi export

Selanjutnya kita akan membuat controller, dimana didalam controller ini akan menangani halaman index dan fungsi export yang akan kita gunakan.

Buatlah sebuah file dengan nama Export.php didalam folder /application/controllers lalu masukan kode dibawah ini.

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

require('./application/third_party/phpoffice/vendor/autoload.php');

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

class Export extends CI_Controller {

     public function __construct()
     {
          parent::__construct();
         $this->load->model('export_model');
     }

     public function index()
     {
          $data['semua_pengguna'] = $this->export_model->getAll()->result();
          $this->load->view('export', $data);
     }

     public function export()
     {
          $semua_pengguna = $this->export_model->getAll()->result();

          $spreadsheet = new Spreadsheet;

          $spreadsheet->setActiveSheetIndex(0)
                      ->setCellValue('A1', 'No')
                      ->setCellValue('B1', 'Nama')
                      ->setCellValue('C1', 'Jenis Kelamin')
                      ->setCellValue('D1', 'Tanggal Lahir')
                      ->setCellValue('E1', 'Umur');

          $kolom = 2;
          $nomor = 1;
          foreach($semua_pengguna as $pengguna) {

               $spreadsheet->setActiveSheetIndex(0)
                           ->setCellValue('A' . $kolom, $nomor)
                           ->setCellValue('B' . $kolom, $pengguna->nama)
                           ->setCellValue('C' . $kolom, $pengguna->jenis_kelamin)
                           ->setCellValue('D' . $kolom, date('j F Y', strtotime($pengguna->tanggal_lahir)))
                           ->setCellValue('E' . $kolom, $pengguna->umur);

               $kolom++;
               $nomor++;

          }

          $writer = new Xlsx($spreadsheet);

          header('Content-Type: application/vnd.ms-excel');
	  header('Content-Disposition: attachment;filename="Latihan.xlsx"');
	  header('Cache-Control: max-age=0');

	  $writer->save('php://output');
     }
}Code language: HTML, XML (xml)

Jika sudah silakan simpan, kode diatas berguna untuk menangani halaman utama atau index, setelah itu pada method export akan sedikit saya jelaskan.

require('./application/third_party/phpoffice/vendor/autoload.php'); kode require() ini digunakan untuk memanggil file autoload.php dimana didalamnya telah terdapat sebuah fungsi autoload yang berguna untuk memanggil semua yang dibutuhkan didalam library PHPOffice tanpa perlu kita memasukannya satu persatu.

Lalu beberapa keyword use (penggunaan namespace) tersebut digunakan untuk memanggil library yang telah dipanggil didalam autoload pada PHPOffice tersebut.

setActiveSheetIndex(0) fungsi ini digunakan untuk menentukan atau mengaktifkan Worksheet yang akan kita gunakan dimana Worksheet pertama dimulai dari 0 ya pak 😀

setCellValue(Posisi, Nilai) sedangkan pada fungsi ini digunakan untuk menentukan kolom yang akan kita isi didalam file excel.

Step 5: Membuat tampilan tabel data

Selanjutnya kita akan membuat tampilan tabel, dimana isi tabel ini nantinya adalah seluruh data yang ada di database pengguna.

Caranya, buatlah sebuah file dengan nama export.php didalam folder /application/views lalu masukan kode dibawah ini.

<!DOCTYPE html>
<html>
<head>
     <title>Tutorial Export Dengan Codeigniter</title>
</head>
<body>
     <a href="<?php echo base_url('export'); ?>">Export Data</a>
     <table border="1" cellspacing="0">
          <thead>
               <tr>
                    <th style="width: 7%; text-align: center;">No</th>
                    <th style="width: 30%">Nama</th>
                    <th>Jenis Kelamin</th>
                    <th>Tanggal Lahir</th>
                    <th style="text-align: center;">Umur</th>
               </tr>
          </thead>
          <tbody>
               <?php $index = 1; ?>
               <?php foreach($semua_pengguna as $pengguna): ?>
                    <tr>
                         <td style="width: 7%; text-align: center;"><?php echo $index++; ?></td>
                         <td style="width: 30%"><?php echo $pengguna->nama; ?></td>
                         <td><?php echo $pengguna->jenis_kelamin; ?></td>
                         <td><?php echo date('j F Y', strtotime($pengguna->tanggal_lahir)); ?></td>
                         <td style="text-align: center;"><?php echo $pengguna->umur; ?></td>
                    </tr>
               <?php endforeach; ?>
          </tbody>
     </table>
</body>
</html>Code language: HTML, XML (xml)

Pada halaman html diatas telah disesuaikan dengan yang ada di controller dan telah ditambahkan link export hanya saja kita perlu menyesuaikan route agar tampilan tersebut menjadi halaman utama latihan export ini.

Step 6: Konfigurasi route export file codeigniter

Selanjutnya ada step terakhir adalah membuat konfigurasi didalam route, dimana nantinya kita perlu merubah halaman Welcome codeigniter menjadi tampilan tabel data yang telah kita buat.

Buka file routes.php yang ada didalam folder /application/config lalu ubahlah kode dibawah ini.

$route['default_controller'] = 'welcome';Code language: PHP (php)

Menjadi…

$route['default_controller'] = 'export';
$route['export'] = 'export/export';Code language: PHP (php)

Pada kode diatas terlihat kita telah merubah halaman utama yang awalnya adalah tampilan Welcome codeigniter menjadi halaman export dan menambahkan route untuk fungsi export.

Pada step terakhir ini fungsi export telah selesai, silakan anda lakukan uji coba dengan membuka halaman utama latihan export anda, jika sudah benar maka seharusnya akan tampil seperti gambar dibawah ini.

membuat export file codeigniter

Silakan klik link Export Data, jika berhasil maka akan secara otomatis melakukan download file excel dimana didalam file excel tersebut terdapat data-data yang ada didalam database pengguna.

Step 7: Tambahan latihan

Setelah berhasil melakukan export menggunakan file excel codeigniter dengan library PHPOffice/PHPSpreadsheet maka selanjutnya anda dapat melakukan pengembangan dengan memanfaatkan fitur-fitur format file yang disediakan oleh PhpSpreadsheet, berikut ini link untuk latihan merubah format export file dengan codeigniter.

https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/

Sekian dari saya semoga tutorial ini mudah dimengerti dan bermanfaat untuk proyek-proyek kerja menggunakan codeigniter.

11 Comments

Anggi Nuraziz

Anggi Nuraziz

Kok punya saya pas export, kolom nama, umur, dan lainnya tidak muncul ya
Reply #1952
Aris Munandar

Aris Munandar

@Anggi Nuraziz
Silahkan perhatikan lebih detail bagian controller dan view.
Reply #1954
Ananda indra setiawan

Ananda indra setiawan

Kak gimana caranya biar misal nama A cuman bisa liat yang A doang bukan keseluruhan
Reply #1976
Aris Munandar

Aris Munandar

@Ananda indra setiawan
Bisa ditambahkan role.. jadi masing-masing user memiliki role yang berbeda2..
Reply #1977
Yuda

Yuda

Pak kok saya error pas instansiasi objek yah? errornya Undefined type 'PhpOffice\PhpSpreadsheet\Writer\Xlsx'
Reply #1986
Aris Munandar

Aris Munandar

@Yuda
Bisa cek di library PhpSpreadsheet apakah Xlsx tersedia didirektori anda.
Reply #1987
azima

azima

ada tutorial buat import .xlsx ga gan?
Reply #1989
Aris Munandar

Aris Munandar

@azima
belum ada
Reply #1990
aan

aan

bang kalo dijadikan 2 sheet bagaimana ya?
Reply #2089
Aris Munandar

Aris Munandar

@aan
Saya belum pernah sih buat ini, tapi kalau nggak salah tinggal di atur di indexnya di setActiveSheetIndex(), 0 itu sheet pertama kalau nggak salah.. coba baca-baca lagi PhpOffice.
Reply #2090
nugraha

nugraha

ka, kalau pengen buat 2 sheet gimana, misal sheet 1 data A dan sheet 2 data B
Reply #2235

Leave comment

Alamat email Anda tidak akan dipublikasikan. Required fields are marked *

news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

sabung ayam online

sabung ayam online

judi bola online

sabung ayam online

judi bola online

slot mahjong ways

slot mahjong

sabung ayam online

judi bola

live casino

sabung ayam online

judi bola

live casino

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

post 138000906

post 138000907

post 138000908

post 138000909

post 138000910

post 138000911

post 138000912

post 138000913

post 138000914

post 138000915

post 138000916

post 138000917

post 138000918

post 138000919

post 138000920

post 138000921

post 138000922

post 138000923

post 138000924

post 138000925

cuaca 228000651

cuaca 228000652

cuaca 228000653

cuaca 228000654

cuaca 228000655

cuaca 228000656

cuaca 228000657

cuaca 228000658

cuaca 228000659

cuaca 228000660

cuaca 228000661

cuaca 228000662

cuaca 228000663

cuaca 228000664

cuaca 228000665

cuaca 228000666

cuaca 228000667

cuaca 228000668

cuaca 228000669

cuaca 228000670

cuaca 228000671

cuaca 228000672

cuaca 228000673

cuaca 228000674

cuaca 228000675

cuaca 228000676

cuaca 228000677

cuaca 228000678

cuaca 228000679

cuaca 228000680

cuaca 228000681

cuaca 228000682

cuaca 228000683

cuaca 228000684

cuaca 228000685

cuaca 228000686

cuaca 228000687

cuaca 228000688

cuaca 228000689

cuaca 228000690

cuaca 228000691

cuaca 228000692

cuaca 228000693

cuaca 228000694

cuaca 228000695

cuaca 228000696

cuaca 228000697

cuaca 228000698

cuaca 228000699

cuaca 228000700

cuaca 228000701

cuaca 228000702

cuaca 228000703

cuaca 228000704

cuaca 228000705

cuaca 228000706

cuaca 228000707

cuaca 228000708

cuaca 228000709

cuaca 228000710

post 238000581

post 238000582

post 238000583

post 238000584

post 238000585

post 238000586

post 238000587

post 238000588

post 238000589

post 238000590

post 238000591

post 238000592

post 238000593

post 238000594

post 238000595

post 238000596

post 238000597

post 238000598

post 238000599

post 238000600

post 238000601

post 238000602

post 238000603

post 238000604

post 238000605

post 238000606

post 238000607

post 238000608

post 238000609

post 238000610

info 328000551

info 328000552

info 328000553

info 328000554

info 328000555

info 328000556

info 328000557

info 328000558

info 328000559

info 328000560

info 328000561

info 328000562

info 328000563

info 328000564

info 328000565

info 328000566

info 328000567

info 328000568

info 328000569

info 328000570

berita 428011461

berita 428011462

berita 428011463

berita 428011464

berita 428011465

berita 428011466

berita 428011467

berita 428011468

berita 428011469

berita 428011470

berita 428011471

berita 428011472

berita 428011473

berita 428011474

berita 428011475

berita 428011476

berita 428011477

berita 428011478

berita 428011479

berita 428011480

berita 428011481

berita 428011482

berita 428011483

berita 428011484

berita 428011485

berita 428011486

berita 428011487

berita 428011488

berita 428011489

berita 428011490

kajian 638000036

kajian 638000037

kajian 638000038

kajian 638000039

kajian 638000040

kajian 638000041

kajian 638000042

kajian 638000043

kajian 638000044

kajian 638000045

kajian 638000046

kajian 638000047

kajian 638000048

kajian 638000049

kajian 638000050

kajian 638000051

kajian 638000052

kajian 638000053

kajian 638000054

kajian 638000055

kajian 638000056

kajian 638000057

kajian 638000058

kajian 638000059

kajian 638000060

kajian 638000061

kajian 638000062

kajian 638000063

kajian 638000064

kajian 638000065

article 788000031

article 788000032

article 788000033

article 788000034

article 788000035

article 788000036

article 788000037

article 788000038

article 788000039

article 788000040

article 788000041

article 788000042

article 788000043

article 788000044

article 788000045

article 788000046

article 788000047

article 788000048

article 788000049

article 788000050

article 788000051

article 788000052

article 788000053

article 788000054

article 788000055

article 788000056

article 788000057

article 788000058

article 788000059

article 788000060

article 788000061

article 788000062

article 788000063

article 788000064

article 788000065

article 788000067

article 788000068

article 788000069

article 788000070

article 788000071

article 788000072

article 788000073

article 788000074

article 788000075

article 788000076

news-1701
news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

sabung ayam online

sabung ayam online

judi bola online

sabung ayam online

judi bola online

slot mahjong ways

slot mahjong

sabung ayam online

judi bola

live casino

sabung ayam online

judi bola

live casino

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

post 138000906

post 138000907

post 138000908

post 138000909

post 138000910

post 138000911

post 138000912

post 138000913

post 138000914

post 138000915

post 138000916

post 138000917

post 138000918

post 138000919

post 138000920

post 138000921

post 138000922

post 138000923

post 138000924

post 138000925

cuaca 228000651

cuaca 228000652

cuaca 228000653

cuaca 228000654

cuaca 228000655

cuaca 228000656

cuaca 228000657

cuaca 228000658

cuaca 228000659

cuaca 228000660

cuaca 228000661

cuaca 228000662

cuaca 228000663

cuaca 228000664

cuaca 228000665

cuaca 228000666

cuaca 228000667

cuaca 228000668

cuaca 228000669

cuaca 228000670

cuaca 228000671

cuaca 228000672

cuaca 228000673

cuaca 228000674

cuaca 228000675

cuaca 228000676

cuaca 228000677

cuaca 228000678

cuaca 228000679

cuaca 228000680

cuaca 228000681

cuaca 228000682

cuaca 228000683

cuaca 228000684

cuaca 228000685

cuaca 228000686

cuaca 228000687

cuaca 228000688

cuaca 228000689

cuaca 228000690

cuaca 228000691

cuaca 228000692

cuaca 228000693

cuaca 228000694

cuaca 228000695

cuaca 228000696

cuaca 228000697

cuaca 228000698

cuaca 228000699

cuaca 228000700

cuaca 228000701

cuaca 228000702

cuaca 228000703

cuaca 228000704

cuaca 228000705

cuaca 228000706

cuaca 228000707

cuaca 228000708

cuaca 228000709

cuaca 228000710

post 238000581

post 238000582

post 238000583

post 238000584

post 238000585

post 238000586

post 238000587

post 238000588

post 238000589

post 238000590

post 238000591

post 238000592

post 238000593

post 238000594

post 238000595

post 238000596

post 238000597

post 238000598

post 238000599

post 238000600

post 238000601

post 238000602

post 238000603

post 238000604

post 238000605

post 238000606

post 238000607

post 238000608

post 238000609

post 238000610

info 328000551

info 328000552

info 328000553

info 328000554

info 328000555

info 328000556

info 328000557

info 328000558

info 328000559

info 328000560

info 328000561

info 328000562

info 328000563

info 328000564

info 328000565

info 328000566

info 328000567

info 328000568

info 328000569

info 328000570

berita 428011461

berita 428011462

berita 428011463

berita 428011464

berita 428011465

berita 428011466

berita 428011467

berita 428011468

berita 428011469

berita 428011470

berita 428011471

berita 428011472

berita 428011473

berita 428011474

berita 428011475

berita 428011476

berita 428011477

berita 428011478

berita 428011479

berita 428011480

berita 428011481

berita 428011482

berita 428011483

berita 428011484

berita 428011485

berita 428011486

berita 428011487

berita 428011488

berita 428011489

berita 428011490

kajian 638000036

kajian 638000037

kajian 638000038

kajian 638000039

kajian 638000040

kajian 638000041

kajian 638000042

kajian 638000043

kajian 638000044

kajian 638000045

kajian 638000046

kajian 638000047

kajian 638000048

kajian 638000049

kajian 638000050

kajian 638000051

kajian 638000052

kajian 638000053

kajian 638000054

kajian 638000055

kajian 638000056

kajian 638000057

kajian 638000058

kajian 638000059

kajian 638000060

kajian 638000061

kajian 638000062

kajian 638000063

kajian 638000064

kajian 638000065

article 788000031

article 788000032

article 788000033

article 788000034

article 788000035

article 788000036

article 788000037

article 788000038

article 788000039

article 788000040

article 788000041

article 788000042

article 788000043

article 788000044

article 788000045

article 788000046

article 788000047

article 788000048

article 788000049

article 788000050

article 788000051

article 788000052

article 788000053

article 788000054

article 788000055

article 788000056

article 788000057

article 788000058

article 788000059

article 788000060

article 788000061

article 788000062

article 788000063

article 788000064

article 788000065

article 788000067

article 788000068

article 788000069

article 788000070

article 788000071

article 788000072

article 788000073

article 788000074

article 788000075

article 788000076

news-1701