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

118000706

118000707

118000708

118000709

118000710

118000711

118000712

118000713

118000714

118000715

118000716

118000717

118000718

118000719

118000720

118000721

118000722

118000723

118000724

118000725

118000726

118000727

118000728

118000729

118000730

118000731

118000732

118000733

118000734

118000735

118000736

118000737

118000738

118000739

118000740

118000741

118000742

118000743

118000744

118000745

118000746

118000747

118000748

118000749

118000750

118000751

118000752

118000753

118000754

118000755

118000756

118000757

118000758

118000759

118000760

138000441

138000442

138000443

138000444

138000445

138000446

138000447

138000448

138000449

138000450

138000451

138000452

138000453

138000454

138000455

138000456

138000457

138000458

138000459

138000460

138000461

138000462

138000463

138000464

138000465

138000466

138000467

138000468

138000469

138000470

158000346

158000347

158000348

158000349

158000350

158000351

158000352

158000353

158000354

158000355

158000356

158000357

158000358

158000359

158000360

158000361

158000362

158000363

158000364

158000365

158000366

158000367

158000368

158000369

158000370

158000371

158000372

158000373

158000374

158000375

208000381

208000382

208000383

208000384

208000385

208000386

208000387

208000388

208000389

208000390

208000391

208000392

208000393

208000394

208000395

208000396

208000397

208000398

208000399

208000400

208000401

208000402

208000403

208000404

208000405

208000406

208000407

208000408

208000409

208000410

228000086

228000087

228000088

228000089

228000090

228000091

228000092

228000093

228000094

228000095

228000096

228000097

228000098

228000099

228000100

228000101

228000102

228000103

228000104

228000105

228000106

228000107

228000108

228000109

228000110

228000111

228000112

228000113

228000114

228000115

228000116

228000117

228000118

228000119

228000120

228000121

228000122

228000123

228000124

228000125

228000126

228000127

228000128

228000129

228000130

228000131

228000132

228000133

228000134

228000135

228000136

228000137

228000138

228000139

228000140

228000141

228000142

228000143

228000144

228000145

228000146

228000147

228000148

228000149

228000150

228000151

228000152

228000153

228000154

228000155

228000156

228000157

228000158

228000159

228000160

228000161

228000162

228000163

228000164

228000165

228000166

228000167

228000168

228000169

228000170

228000171

228000172

228000173

228000174

228000175

228000176

228000177

228000178

228000179

228000180

228000181

228000182

228000183

228000184

228000185

238000232

238000233

238000234

238000235

238000236

238000237

238000238

238000239

238000240

238000241

238000242

238000243

238000244

238000245

238000246

238000247

238000248

238000249

238000250

238000251

238000252

238000253

238000254

238000255

238000256

news-1701