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

artikel-128000741

artikel-128000742

artikel-128000743

artikel-128000744

artikel-128000745

artikel-128000746

artikel-128000747

artikel-128000748

artikel-128000749

artikel-128000750

artikel-128000751

artikel-128000752

artikel-128000753

artikel-128000754

artikel-128000755

artikel-128000756

artikel-128000757

artikel-128000758

artikel-128000759

artikel-128000760

artikel-128000761

artikel-128000762

artikel-128000763

artikel-128000764

artikel-128000765

artikel-128000766

artikel-128000767

artikel-128000768

artikel-128000769

artikel-128000770

artikel-128000771

artikel-128000772

artikel-128000773

artikel-128000774

artikel-128000775

artikel-128000776

artikel-128000777

artikel-128000778

artikel-128000779

artikel-128000780

artikel-128000781

artikel-128000782

artikel-128000783

artikel-128000784

artikel-128000785

artikel-128000786

artikel-128000787

artikel-128000788

artikel-128000789

artikel-128000790

artikel-128000791

article 138000691

article 138000692

article 138000693

article 138000694

article 138000695

article 138000696

article 138000697

article 138000698

article 138000699

article 138000700

article 138000701

article 138000702

article 138000703

article 138000704

article 138000705

article 138000706

article 138000707

article 138000708

article 138000709

article 138000710

article 138000711

article 138000712

article 138000713

article 138000714

article 138000715

article 138000716

article 138000717

article 138000718

article 138000719

article 138000720

article 138000721

article 138000722

article 138000723

article 138000724

article 138000725

article 138000726

article 138000727

article 138000728

article 138000729

article 138000730

article 138000731

article 138000732

article 138000733

article 138000734

article 138000735

article 138000736

article 138000737

article 138000738

article 138000739

article 138000740

article 138000741

article 138000742

article 138000743

article 138000744

article 138000745

article 138000746

article 138000747

article 138000748

article 138000749

article 138000750

article 138000751

article 138000752

article 138000753

article 138000754

article 138000755

article 138000706

article 138000707

article 138000708

article 138000709

article 138000710

article 138000711

article 138000712

article 138000713

article 138000714

article 138000715

article 138000716

article 138000717

article 138000718

article 138000719

article 138000720

article 138000721

article 138000722

article 138000723

article 138000724

article 138000725

article 138000726

article 138000727

article 138000728

article 138000729

article 138000730

article 138000731

article 138000732

article 138000733

article 138000734

article 138000735

article 138000736

article 138000737

article 138000738

article 138000739

article 138000740

article 138000741

article 138000742

article 138000743

article 138000744

article 138000745

article 208000456

article 208000457

article 208000458

article 208000459

article 208000460

article 208000461

article 208000462

article 208000463

article 208000464

article 208000465

article 208000466

article 208000467

article 208000468

article 208000469

article 208000470

208000446

208000447

208000448

208000449

208000450

208000451

208000452

208000453

208000454

208000455

article 228000326

article 228000327

article 228000328

article 228000329

article 228000330

article 228000331

article 228000332

article 228000333

article 228000334

article 228000335

article 228000336

article 228000337

article 228000338

article 228000339

article 228000340

article 228000341

article 228000342

article 228000343

article 228000344

article 228000345

article 228000346

article 228000347

article 228000348

article 228000349

article 228000350

article 228000351

article 228000352

article 228000353

article 228000354

article 228000355

article 228000356

article 228000357

article 228000358

article 228000359

article 228000360

article 228000361

article 228000362

article 228000363

article 228000364

article 228000365

article 228000366

article 228000367

article 228000368

article 228000369

article 228000370

article 228000371

article 228000372

article 228000373

article 228000374

article 228000375

article 238000381

article 238000382

article 238000383

article 238000384

article 238000385

article 238000386

article 238000387

article 238000388

article 238000389

article 238000390

article 238000391

article 238000392

article 238000393

article 238000394

article 238000395

article 238000396

article 238000397

article 238000398

article 238000399

article 238000400

article 238000401

article 238000402

article 238000403

article 238000404

article 238000405

article 238000406

article 238000407

article 238000408

article 238000409

article 238000410

article 238000411

article 238000412

article 238000413

article 238000414

article 238000415

article 238000416

article 238000417

article 238000418

article 238000419

article 238000420

article 238000421

article 238000422

article 238000423

article 238000424

article 238000425

article 238000426

article 238000427

article 238000428

article 238000429

article 238000430

article 238000431

article 238000432

article 238000433

article 238000434

article 238000435

article 238000436

article 238000437

article 238000438

article 238000439

article 238000440

article 238000441

article 238000442

article 238000443

article 238000444

article 238000445

article 238000446

article 238000447

article 238000448

article 238000449

article 238000450

article 238000451

article 238000452

article 238000453

article 238000454

article 238000455

article 238000456

article 238000457

article 238000458

article 238000459

article 238000460

sumbar-238000381

sumbar-238000382

sumbar-238000383

sumbar-238000384

sumbar-238000385

sumbar-238000386

sumbar-238000387

sumbar-238000388

sumbar-238000389

sumbar-238000390

sumbar-238000391

sumbar-238000392

sumbar-238000393

sumbar-238000394

sumbar-238000395

sumbar-238000396

sumbar-238000397

sumbar-238000398

sumbar-238000399

sumbar-238000400

sumbar-238000401

sumbar-238000402

sumbar-238000403

sumbar-238000404

sumbar-238000405

sumbar-238000406

sumbar-238000407

sumbar-238000408

sumbar-238000409

sumbar-238000410

news-1701