Cara Membaca dan Membuat File Excel dengan CodeIgniter dan PHPExcel

Kemampuan untuk membaca dan membuat file Excel dalam sebuah aplikasi berbasis web sangat dibutuhkan. Biasanya untuk keperluan menginput data yang banyak (impor) atau untuk menghasilkan laporan yang bisa diolah lebih lanjut (ekspor). Dalam tulisan ini akan dijelaskan langkah-langkah atau cara menggabungkan CodeIgniter dengan library PHPExcel:

Install PHPExcel

  • Download library PHPExcel dari alamat: http://phpexcel.codeplex.com/
  • Buat folder baru bernama PHPExcel di folder application/third_party
  • Extract file PHPExcel yang sudah di download dan copy ke dalam folder application/third_party/PHPExcel

Buat Library di CodeIgniter

Buatlah sebuah file baru dengan nama Excel.php di dalam folder application/library , kemudian isi dengan kode sebagai berikut:

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');  
 
require_once APPPATH."/third_party/PHPExcel/PHPExcel.php";
ini_set('memory_limit','1024M');
 
Class Excel extends PHPExcel {
    public function __construct() {
        parent::__construct();
    }
}
?>

 

Contoh Membaca File Excel

Buat dulu file Excel dengan nama coba.xls (isinya bebas), kemudian taruh file Excel tersebut di folder application (atau dimana saja sesuai keinginan).

Buatlah sebuah method baru di controller Welcome dan isinya seperti ini:

public function bacaexcel()
{
    $file = APPPATH.'coba.xls';
    $this->load->library('excel');
 
    $objPHPExcel = PHPExcel_IOFactory::load($file);
 
    // Ambil koleksi cell saja
    $cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
 
    // Copy ke array semua cell nya
    $data = array();
    foreach ($cell_collection as $cell) {
 
        $kolom = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
        $baris = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
        $isi   = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();
 
        if ($baris == 1) {
            $header[$kolom] = $isi;
        } else if ($baris >= 1) {
            $data[$baris][$kolom] = $isi;
        }
 
    }
 
    // Untuk keperluan demo, saya tidak pakai view
    print "<table border='1' cellpadding='5'>";
    print "<tr>";
    foreach ($header as $h) {
        print "<td><b>$h</b></td>";
    }
    print "</tr>";
    foreach($data as $bar) {
        print "<tr>";
        foreach ($bar as $kol) {
            print "<td>$kol</td>";
        }
        print "</tr>";
    }
    print "</table>";
 
}

Bila instalasi PHPExcel sudah benar dan program sudah benar, maka akan menghasilkan output sebagai berikut: (tampilan ini hanya contoh.  Tergantung isi file coba.xls yang anda buat).

 

Contoh Membuat File Excel

Ini adalah contoh membuat file Excel. (untuk percobaan, script ini boleh ditaruh di controller Welcome).

public function buatexcel()
{
    $this->load->library('excel');
    $this->excel->setActiveSheetIndex(0);
    $this->excel->getActiveSheet()->setTitle('Worksheet1');
    $this->excel->getActiveSheet()->setCellValue('A1', 'Halo CodeIgniter Indonesia');
    $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20);
    $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setName("Calibri");
    $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
 
    $filename='demo.xls'; 
 
    // Header file Excel
    header('Content-Type: application/vnd.ms-excel'); 
    header('Content-Disposition: attachment;filename="'.$filename.'"');
    header('Cache-Control: max-age=0'); 
 
    $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');
 
    // Agar output didownload
    $objWriter->save('php://output');
}

Jalankan programnya maka browser akan mendownload file Excel dengan nama demo.xls. Silahkan dibuka file Excel tersebut dan anda akan lihat hasilnya seperti ini: (tulisan dengan font Calibri, 20px, Bold. Sesuai dengan yang didefinisikan di script tadi. Mantap).

 

Contoh Membuat File Excel dari database

Contoh script untuk membuat file Excel yang datanya diambil dari database:

public function exceldatabase() {
 
    $this->load->library('excel');
    $this->excel->setActiveSheetIndex(0);
    $this->excel->getActiveSheet()->setTitle('Daftar Siswa');
 
    // Load model
    $this->load->model('siswa_model');
 
    // Baca dari tabel sebagai array
    $siswa = $this->siswa_model->get_array();
 
    // Perintahkan PHPExcel untuk membuat 
    $this->excel->getActiveSheet()->fromArray($siswa);
 
    $filename='siswa.xls'; 
 
    header('Content-Type: application/vnd.ms-excel'); 
    header('Content-Disposition: attachment;filename="'.$filename.'"'); 
    header('Cache-Control: max-age=0'); 
    $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); 
 
    $objWriter->save('php://output');
}

Kalau script anda sudah benar, maka akan menghasilkan file Excel seperti ini. (pada contoh ini saya mengambil data dari database Siswa).

 

Selesai

Demikian sekilas panduan bagaimana cara membaca dan membuat file Excel dengan CodeIgniter dan PHPExcel. Sederhana dan mudah bukan? So.. kalau ada framework CodeIgniter yang mudah, buat apa cari yang susah, hehehe.

Selamat mencoba dan berkarya, jangan lupa untuk share ke teman-teman.

 

 

Topik yang sedang hot:


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *