Cara Membuat Export Data Excel Menggunakan PHPExcel dan Codeigniter


Jakarta, 24 jan 2019


export excel menggunakan codeigniter

Cara Membuat Export Data Excel Menggunakan PHPExcel dan Codeigniter


Sebelum kita mulai, silakan download framework Codeigniter 3 (versi 3) di link berikut : download framework * sumber dari http://www.mynotescode.com

Juga silakan download plugin PHPExcel di link berikut : plug in * sumber dari http://www.mynotescode.com

Setelah download, mari kita mulai.

Langkah 1 - Persiapan

A. Buat lah sebuah folder dengan nama export_phpexcel_ci, lalu simpan pada folder xampp/htdocs/

  1. B. Ekstrak, Copy dan Paste file codeigniter_v3.7z yang telah di download tadi ke folder xampp/htdocs/export_phpexcel_ci/

  2. C. Ekstrak, Copy dan Paste file PHPExcel.7z yang telah di download tadi, yang di copy adalah folder PHPExcel nya ke folder xampp/htdocs/export_phpexcel_ci/application/third_party/

  3. Langkah 2 - Buat Database

  4. Buat database dengan nama mynotescode (nama dapat di sesuaikan keinginan masing - masing di artikel ini menggunakan nama tersebut karena mengambil sumber dari  
      http://www.mynotescode.com). Setelah di terbentuk database nya, buat lah tabel siswa dengan structur tabel sebagai berikut :

table siswa

Langkah 3 - konfigurasi

Jika kalian pertama kali menggunakan codeigniter, silakan ikuti langkah ini, jika tidak bisa di skip.
  1. A. Buka folder xampp/htdocs/export_phpexcel_ci/application/config/
  2. Buka file config.php, kemudian cari kode berikut $config['base_url'] = '';
  3. Ubah kode tersebut jadi seperti dibawah:
    1. $config['base_url'] = 'http://localhost/export_phpexcel_ci';
    Lalu simpan file tersebut.
  4. Kode tersebut digunakan untuk menset baseurl nya.
  5. B. Buka file autoload.php
    Cari kode berikut ini :
    1. $autoload['libraries'] = array();
    2. $autoload['helper'] = array();
    Dan ubah jadi seperti ini :
    1. $autoload['libraries'] = array('database');
    2. $autoload['helper'] = array('url');
    Lalu simpan file tersebut.
  6. Kode tersebut digunakan untuk memuat (menload) class database dan url.
  7. C. Buka file routes.php
    Cari kode berikut ini :
    1. $route['default_controller'] = 'welcome';
    Dan ubah jadi seperti ini :
    1. $route['default_controller'] = 'siswa';
    Lalu simpan file tersebut.
  8. Kode diatas digunakan untuk menset controller mana yang akan diload pertama kali. Secara default, Codeigniter telah menset default controller yaitu welcome. Disini kita set default controller menjadi siswa.
  9. D. Buka file database.php
    Cari kode berikut ini :
    1. 'hostname' => 'localhost',
    2. 'username' => '',
    3. 'password' => '',
    4. 'database' => '',
    Dan ubah jadi seperti ini :
    1. 'hostname' => 'localhost', // Nama host
    2. 'username' => 'root', // Username
    3. 'password' => '', // Jika menggunakan password isi, jika tidak kosongkan saja
    4. 'database' => 'mynotescode', // Nama databasenya (menyesuaikan keinginan kalian)
    Lalu simpan file tersebut.
  10. Kode diatas digunakan untuk koneksi ke database.
  11. Langkah 4 - Buat Model
  12. Sekarang kita akan membuat model . Model ini berisi sebuah fungsi untuk menampilkan semua data siswa yang ada pada database (tabel siswa).
  13. Buatlah sebuah file baru dengan nama SiswaModel.php, lalu simpan pada folder xampp/htdocs/export_phpexcel_ci/application/models/ Di bawah ini adalah script yang harus di isi :
    1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    2. class SiswaModel extends CI_Model {
    3. public function view(){
    4. return $this->db->get('siswa')->result(); // Tampilkan semua data yang ada di tabel siswa
    5. }
    6. }
  14. Pada kode di atas, kita membuat sebuah fungsi view(). Dimana di dalam script tersebut ada kode $this->db->get('siswa')->result(); Kode tersebut di gunakan untuk memanggil isi dari table siswa dan kemudian menampilkan nya ke web (dengan menggunakan kode return).

  15. Langkah 5 - Buat Controller
  16. Langkah selanjutnya adalah dengan membuat controller. Buat file baru dengan nama Siswa.php.  Simpan file tersebut di folder xampp/htdocs/export_phpexcel_ci/application/controllers/ Di bawah ini adalah script yang harus di isi :

    1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct(){ parent::__construct(); $this->load->model('SiswaModel'); } public function index(){ $data['siswa'] = $this->SiswaModel->view(); $this->load->view('view', $data); } public function export(){ // Load plugin PHPExcel nya include APPPATH.'third_party/PHPExcel/PHPExcel.php'; // Panggil class PHPExcel nya $excel = new PHPExcel(); // Settingan awal fil excel $excel->getProperties()->setCreator('My Notes Code') ->setLastModifiedBy('My Notes Code') ->setTitle("Data Siswa") ->setSubject("Siswa") ->setDescription("Laporan Semua Data Siswa") ->setKeywords("Data Siswa"); // Buat sebuah variabel untuk menampung pengaturan style dari header tabel $style_col = array( 'font' => array('bold' => true), // Set font nya jadi bold 'alignment' => array( 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER, // Set text jadi ditengah secara horizontal (center) 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER // Set text jadi di tengah secara vertical (middle) ), 'borders' => array( 'top' => array('style' => PHPExcel_Style_Border::BORDER_THIN), // Set border top dengan garis tipis 'right' => array('style' => PHPExcel_Style_Border::BORDER_THIN), // Set border right dengan garis tipis 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), // Set border bottom dengan garis tipis 'left' => array('style' => PHPExcel_Style_Border::BORDER_THIN) // Set border left dengan garis tipis ) ); // Buat sebuah variabel untuk menampung pengaturan style dari isi tabel $style_row = array( 'alignment' => array( 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER // Set text jadi di tengah secara vertical (middle) ), 'borders' => array( 'top' => array('style' => PHPExcel_Style_Border::BORDER_THIN), // Set border top dengan garis tipis 'right' => array('style' => PHPExcel_Style_Border::BORDER_THIN), // Set border right dengan garis tipis 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), // Set border bottom dengan garis tipis 'left' => array('style' => PHPExcel_Style_Border::BORDER_THIN) // Set border left dengan garis tipis ) ); $excel->setActiveSheetIndex(0)->setCellValue('A1', "DATA SISWA"); // Set kolom A1 dengan tulisan "DATA SISWA" $excel->getActiveSheet()->mergeCells('A1:E1'); // Set Merge Cell pada kolom A1 sampai E1 $excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(TRUE); // Set bold kolom A1 $excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(15); // Set font size 15 untuk kolom A1 $excel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // Set text center untuk kolom A1 // Buat header tabel nya pada baris ke 3 $excel->setActiveSheetIndex(0)->setCellValue('A3', "NO"); // Set kolom A3 dengan tulisan "NO" $excel->setActiveSheetIndex(0)->setCellValue('B3', "NIS"); // Set kolom B3 dengan tulisan "NIS" $excel->setActiveSheetIndex(0)->setCellValue('C3', "NAMA"); // Set kolom C3 dengan tulisan "NAMA" $excel->setActiveSheetIndex(0)->setCellValue('D3', "PEKERJAAN"); // Set kolom D3 dengan tulisan "PEKERJAAN" $excel->setActiveSheetIndex(0)->setCellValue('E3', "TELEPHONE"); // Set kolom E3 dengan tulisan "TELEPHONE" $excel->setActiveSheetIndex(0)->setCellValue('F3', "JENIS KELAMIN"); // Set kolom F3 dengan tulisan "JENIS KELAMIN" $excel->setActiveSheetIndex(0)->setCellValue('G3', "ALAMAT"); // Set kolom G3 dengan tulisan "ALAMAT" // Apply style header yang telah kita buat tadi ke masing-masing kolom header $excel->getActiveSheet()->getStyle('A3')->applyFromArray($style_col); $excel->getActiveSheet()->getStyle('B3')->applyFromArray($style_col); $excel->getActiveSheet()->getStyle('C3')->applyFromArray($style_col); $excel->getActiveSheet()->getStyle('D3')->applyFromArray($style_col); $excel->getActiveSheet()->getStyle('E3')->applyFromArray($style_col); $excel->getActiveSheet()->getStyle('F3')->applyFromArray($style_col); $excel->getActiveSheet()->getStyle('G3')->applyFromArray($style_col); // Panggil function view yang ada di SiswaModel untuk menampilkan semua data siswanya $siswa = $this->SiswaModel->view(); $no = 1; // Untuk penomoran tabel, di awal set dengan 1 $numrow = 4; // Set baris pertama untuk isi tabel adalah baris ke 4 foreach($siswa as $data){ // Lakukan looping pada variabel siswa $excel->setActiveSheetIndex(0)->setCellValue('A'.$numrow, $no); $excel->setActiveSheetIndex(0)->setCellValue('B'.$numrow, $data->nis); $excel->setActiveSheetIndex(0)->setCellValue('C'.$numrow, $data->nama); $excel->setActiveSheetIndex(0)->setCellValue('D'.$numrow, $data->pekerjaan); $excel->setActiveSheetIndex(0)->setCellValue('E'.$numrow, $data->telp); $excel->setActiveSheetIndex(0)->setCellValue('F'.$numrow, $data->jeniskelamin); $excel->setActiveSheetIndex(0)->setCellValue('G'.$numrow, $data->alamat); // Apply style row yang telah kita buat tadi ke masing-masing baris (isi tabel) $excel->getActiveSheet()->getStyle('A'.$numrow)->applyFromArray($style_row); $excel->getActiveSheet()->getStyle('B'.$numrow)->applyFromArray($style_row); $excel->getActiveSheet()->getStyle('C'.$numrow)->applyFromArray($style_row); $excel->getActiveSheet()->getStyle('D'.$numrow)->applyFromArray($style_row); $excel->getActiveSheet()->getStyle('E'.$numrow)->applyFromArray($style_row); $excel->getActiveSheet()->getStyle('F'.$numrow)->applyFromArray($style_row); $excel->getActiveSheet()->getStyle('G'.$numrow)->applyFromArray($style_row); $no++; // Tambah 1 setiap kali looping $numrow++; // Tambah 1 setiap kali looping } // Set width kolom $excel->getActiveSheet()->getColumnDimension('A')->setWidth(5); // Set width kolom A $excel->getActiveSheet()->getColumnDimension('B')->setWidth(15); // Set width kolom B $excel->getActiveSheet()->getColumnDimension('C')->setWidth(25); // Set width kolom C $excel->getActiveSheet()->getColumnDimension('D')->setWidth(20); // Set width kolom D $excel->getActiveSheet()->getColumnDimension('E')->setWidth(30); // Set width kolom E $excel->getActiveSheet()->getColumnDimension('F')->setWidth(30); // Set width kolom F $excel->getActiveSheet()->getColumnDimension('G')->setWidth(30); // Set width kolom G // Set height semua kolom menjadi auto (mengikuti height isi dari kolommnya, jadi otomatis) $excel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(-1); // Set orientasi kertas jadi LANDSCAPE $excel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); // Set judul file excel nya $excel->getActiveSheet(0)->setTitle("Laporan Data Siswa"); $excel->setActiveSheetIndex(0); // Proses file excel header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="Data Siswa.xlsx"'); // Set nama file excel nya header('Cache-Control: max-age=0'); $write = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $write->save('php://output'); } }
  17. Untuk lebih jelas mengenai script proses excel nya, bisa langsung di baca di script excel sumber dari http://www.mynotescode.com

  18. Langkah 6 - Buat View

  19. Langkah terakhir adalah membuat view. Silakan buat file baru dengan nama view.php dan simpan di folder xampp/htdocs/export_phpexcel_ci/application/views/ Di bawah ini adalah script yang harus di isi dan contoh tampilan :

    1. <h1>Data Siswa</h1><hr>
    2. <a href="<?php echo base_url("index.php/siswa/export"); ?>">Export ke Excel</a><br><br>
    3. <table border="1" cellpadding="8">
    4. <tr>
    5. <th>NIS</th>
    6. <th>Nama</th>
    7. <th>Pekerjaan</th>
    8. <th>Telephone</th>
    9. <th>Jenis Kelamin</th>
    10. <th>Alamat</th>
    11. </tr>
    12. <?php
    13. if( ! empty($siswa)){ // Jika data pada database tidak sama dengan empty (alias ada datanya)
    14. foreach($siswa as $data){ // Lakukan looping pada variabel siswa dari controller
    15. echo "<tr>";
    16. echo "<td>".$data->nis."</td>";
    17. echo "<td>".$data->nama."</td>";
    18. echo "<td>".$data->pekerjaan."</td>";
    19. echo "<td>".$data->telp."</td>";
    20. echo "<td>".$data->jeniskelamin."</td>";
    21. echo "<td>".$data->alamat."</td>";
    22. echo "</tr>";
    23. }
    24. }else{ // Jika data tidak ada
    25. echo "<tr><td colspan='4'>Data tidak ada</td></tr>";
    26. }
    27. ?>
    28. </table>
  20. Pada script di atas terdapat sebuah kode foreach($siswa as $data)  kode ini akan di gunakan untuk menampilkan satu persatu isi dari database.

  21. Tampilan yang akan keluar adalah :
  22. export data excel menggunakan phpexcel

  23. Sekian artikel Cara Membuat Export Data Excel Menggunakan PHPExcel dan Codeigniter. Semoga bermanfaat.
  24. Terima Kasih

Comments

loading...