lony
lony

Reputation: 7780

PHPExcel integration into Zend Framework

how can I integrate the PHPExcel into my Zend app.

My actual folder structure is the following:

/application
  controllers
  views  
  etc...
/library
  My
  Zend
  PHPExcel
/public
  index.php

I already include 'My' libs by using (in index.php):

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('My_');

Now I also want to use PHPExcel inside one of my controllers like:

$exc = PHPExcel_IOFactory::load('test.xls');
$excelWorksheet = $exc->getActiveSheet();

What do I have to do to make it work and get rid of the Class 'PHPExcel_IOFactory' not found Exception?

Thank you.
-lony

P.S.: A simple $autoloader->registerNamespace('PHPExcel_'); is not working. I tested it.

Upvotes: 7

Views: 14087

Answers (6)

yasir kk
yasir kk

Reputation: 171

I have same issue and i solved it update the composer and in my project folder phpoffice saved inside the vendor module (not in lib). And adding "\" on the PHPExcel_IOFactory whereever you seen.

Upvotes: 0

Additionally I added a "\" on the line where PHPExcel_IOFactory uses In Controller Class:

public function reporteauditoriaAction()
{
    $objPHPExcel = new \PHPExcel();
    $objPHPExcel->createSheet();
    $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Alejin Wbn');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
    $objWriter->save("pruebaPhpExcelZend.xlsx"); 
    //$objPHPExcel->disconnectWorksheets();
    //unset($objPHPExcel);
    $consulta= "Reporte Auditoria, Reconocio los Archivos";
    $vista = new ViewModel(array( "consulta"=>$consulta));
    return $vista;        
}

Upvotes: 0

timmz
timmz

Reputation: 2252

I know it's 2 years since the question is asked but it may help someone; the easiest way ( not the optimal) is to extract the PHPExcel folder in your Public and then just use the old way ex; (in your controller actions):

                include 'PHPExcel.php';
                include 'PHPExcel/Writer/Excel2007.php';

                $myobject = new PHPExcel();

Upvotes: 0

Miljar
Miljar

Reputation: 241

Place the PHPExcel library into the /library folder, like this:

/application
...
/library
    /PHPExcel
    /PHPExcel.php

Next, in your application.ini config file, add the following:

autoloaderNamespaces[] = "PHPExcel_"
autoloaderNamespaces[] = "PHPExcel"

That should do it. Autoloader takes care of the rest, and you can just start using the example code to read an Excel file.

Update: Added the extra autoloaderNamespace as suggested by commenters

Upvotes: 9

Stephen Fuhry
Stephen Fuhry

Reputation: 13009

It needs to be in your include path.

If you ever need a custom autoloader for other libraries that don't follow PSR-0, there's this too: Autoload PhpThumb with Zend Framework (disclaimer: I'm the author).

Upvotes: 0

lony
lony

Reputation: 7780

I found one solution:

require_once 'PHPExcel/PHPExcel/IOFactory.php';

If somebody has a better one, please keep posting!

@BoltClock: Thanks for updating the Tags.

Upvotes: 0

Related Questions