sheldon90 sheldon90 - 1 year ago 498
PHP Question

PHPExcel error in CodeIgniter "Unable to load the requested class: iofactory"

I'm trying to export an xls file with PHPExcel 1.7.8 + CodeIgniter 2.1.3

I have followed all the instructions from

but I'm getting this error

Unable to load the requested class: iofactory

and here's my Controller code

//expoxt to excel all admin data
function export_excel_admin()
//$data['resultsadmin'] = $this->admin_model->get_all_data_admin();
//$this->load->view('administrator/export_excel/export_excel_admin', $data);
$query = $this->db->get('tbl_admin');

return false;

// Starting the PHPExcel library

$objPHPExcel = new PHPExcel();


// Field names in the first row
$fields = $query->list_fields();
$col = 0;
foreach ($fields as $field)
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $field);

// Fetching the table data
$row = 2;
foreach($query->result() as $data)
$col = 0;
foreach ($fields as $field)
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $data->$field);



$objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5');

// Sending headers to force the user to download the file
header('Content-Type: application/');
header('Content-Disposition: attachment;filename="Products_'.date('dMy').'.xls"');
header('Cache-Control: max-age=0');



Ah also I have removed the "PHPExcel_" part in IOFactory.php file
any solution for this issue?

Answer Source

I've used PHPExcel with CodeIgniter successfully before.

All I did was drop the phpexcel folder into application/third-party and created the following wrapper library:


class Excel {

    private $excel;

    public function __construct() {
        // initialise the reference to the codeigniter instance
        require_once APPPATH.'third_party/phpexcel/PHPExcel.php';
        $this->excel = new PHPExcel();    

    public function load($path) {
        $objReader = PHPExcel_IOFactory::createReader('Excel5');
        $this->excel = $objReader->load($path);

    public function save($path) {
        // Write out as the new file
        $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');

    public function stream($filename) {       
        header('Content-type: application/ms-excel');
        header("Content-Disposition: attachment; filename=\"".$filename."\""); 
        header("Cache-control: private");        
        $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');

    public function  __call($name, $arguments) {  
        // make sure our child object has this method  
        if(method_exists($this->excel, $name)) {  
            // forward the call to our child object  
            return call_user_func_array(array($this->excel, $name), $arguments);  
        return null;  


I could then do the following in my controllers:

$this->excel->getActiveSheet()->SetCellValue('B2', "whatever");

Hope this helps you out?

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download