Cara Membuat Export Data Excel Menggunakan PHPExcel dan 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/
- B. Ekstrak, Copy dan Paste file codeigniter_v3.7z yang telah di download tadi ke folder xampp/htdocs/export_phpexcel_ci/
- 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/
- Langkah 2 - Buat Database
- 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 :
Langkah 3 - konfigurasi
Jika kalian pertama kali menggunakan codeigniter, silakan ikuti langkah ini, jika tidak bisa di skip.
- A. Buka folder xampp/htdocs/export_phpexcel_ci/application/config/
- Buka file config.php, kemudian cari kode berikut $config['base_url'] = '';
- Ubah kode tersebut jadi seperti dibawah:
- $config['base_url'] = 'http://localhost/export_phpexcel_ci';
Lalu simpan file tersebut.- Kode tersebut digunakan untuk menset baseurl nya.
- B. Buka file autoload.php
Cari kode berikut ini :- $autoload['libraries'] = array();
- $autoload['helper'] = array();
Dan ubah jadi seperti ini :- $autoload['libraries'] = array('database');
- $autoload['helper'] = array('url');
Lalu simpan file tersebut. - Kode tersebut digunakan untuk memuat (menload) class database dan url.
- C. Buka file routes.php
Cari kode berikut ini :- $route['default_controller'] = 'welcome';
Dan ubah jadi seperti ini :- $route['default_controller'] = 'siswa';
Lalu simpan file tersebut. - 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.
- D. Buka file database.php
Cari kode berikut ini :- 'hostname' => 'localhost',
- 'username' => '',
- 'password' => '',
- 'database' => '',
Dan ubah jadi seperti ini :- 'hostname' => 'localhost', // Nama host
- 'username' => 'root', // Username
- 'password' => '', // Jika menggunakan password isi, jika tidak kosongkan saja
- 'database' => 'mynotescode', // Nama databasenya (menyesuaikan keinginan kalian)
Lalu simpan file tersebut. - Kode diatas digunakan untuk koneksi ke database.
- Langkah 4 - Buat Model
- Sekarang kita akan membuat model . Model ini berisi sebuah fungsi untuk menampilkan semua data siswa yang ada pada database (tabel siswa).
- 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 :
- <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
- class SiswaModel extends CI_Model {
- public function view(){
- return $this->db->get('siswa')->result(); // Tampilkan semua data yang ada di tabel siswa
- }
- }
- 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).
- Langkah 5 - Buat Controller
- 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 :
- <?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'); } }
- Untuk lebih jelas mengenai script proses excel nya, bisa langsung di baca di script excel * sumber dari http://www.mynotescode.com
- Langkah 6 - Buat View
- 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 :
- <h1>Data Siswa</h1><hr>
- <a href="<?php echo base_url("index.php/siswa/export"); ?>">Export ke Excel</a><br><br>
- <table border="1" cellpadding="8">
- <tr>
- <th>NIS</th>
- <th>Nama</th>
- <th>Pekerjaan</th>
- <th>Telephone</th>
- <th>Jenis Kelamin</th>
- <th>Alamat</th>
- </tr>
- <?php
- if( ! empty($siswa)){ // Jika data pada database tidak sama dengan empty (alias ada datanya)
- foreach($siswa as $data){ // Lakukan looping pada variabel siswa dari controller
- echo "<tr>";
- echo "<td>".$data->nis."</td>";
- echo "<td>".$data->nama."</td>";
- echo "<td>".$data->pekerjaan."</td>";
- echo "<td>".$data->telp."</td>";
- echo "<td>".$data->jeniskelamin."</td>";
- echo "<td>".$data->alamat."</td>";
- echo "</tr>";
- }
- }else{ // Jika data tidak ada
- echo "<tr><td colspan='4'>Data tidak ada</td></tr>";
- }
- ?>
- </table>
- Pada script di atas terdapat sebuah kode foreach($siswa as $data) kode ini akan di gunakan untuk menampilkan satu persatu isi dari database.
- Tampilan yang akan keluar adalah :
-
- Sekian artikel Cara Membuat Export Data Excel Menggunakan PHPExcel dan Codeigniter. Semoga bermanfaat.
- Terima Kasih
Comments
Post a Comment