How to use PHPExcel with CodeIgniter 2.x and 3.x

PHPExcel is a pure PHP library for reading and writing spreadsheet files and CodeIgniter is one of the well known PHP MVC frameworks.

Here i show you how to Integrate PHPEXcel library in CodeIgniter.

Setp1: Download and setup CodeIgniter.(download it here:

Setp2: Download PHPExcel.(download it here:

Setp3: Unzip or extract the downloaded PHPExcel lib files and copy Class directory inside files to application/third-party directory (folder).

Setp4: Now create one file called EXcel.php in application/library folder [application/library/Excel.php]. Then include PHPExcel Class to it. See how i did it below



if (!defined('BASEPATH')) exit('No direct script access allowed'); 

require_once APPPATH."/third_party/PHPExcel.php";

class Excel extends PHPExcel {

    public function __construct() {





That’s it now you can use PHPEXcel methods inside your CodeIgniter application.But you should load it before using it methods(Ex: $this->load->library(‘excel’);) 


How to read excel file?


$file = './files/test.xlsx';

//load the excel library


//read file from path

$objPHPExcel = PHPExcel_IOFactory::load($file);

//get only the Cell Collection

$cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();

//extract to a PHP readable array format

foreach ($cell_collection as $cell) {

    $column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();

    $row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();

    $data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();

    //header will/should be in row 1 only. of course this can be modified to suit your need.

    if ($row == 1) {

        $header[$row][$column] = $data_value;

    } else {

        $arr_data[$row][$column] = $data_value;



//send the data in an array format

$data['header'] = $header;

$data['values'] = $arr_data;


How to Create excel file on the file?


//load our new PHPExcel library


//activate worksheet number 1


// Set document properties



                                            ->setTitle("Office 2007 XLSX Test Document")

                                        ->setSubject("Office 2007 XLSX Test Document")

                                            ->setDescription("Test document for Office 2007 XLSX, generated by PHP classes.")

                                            ->setKeywords("office 2007 openxml php")

                                   ->setCategory("Test result file");

//set cell A1 content with some text

$this->excel->getActiveSheet()->setCellValue('A1', 'This is just some text value');

//change the font size


//make the font become bold


//merge cell A1 until D1


//set aligment to center for that merged cell (A1 to D1)


$filename='filename'.date('dmYHis').'.xlsx'; //save our workbook as this file name

 //save it to Excel5 format (excel 2003 .XLS file), change this to 'Excel2007' (and adjust the filename extension, also the header mime type)

//if you want to save it as .XLSX Excel 2007 format

$objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel2007');


header('Content-Type: application/'); //mime type

header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name

header('Cache-Control: max-age=0'); //no cache

//force user to download the Excel file without writing it to server's HD


Social Share

Leave a Reply