在Yii里面使用PHPExcel

首先修改PHPEXCEL /Autoloader.php的文件

public static function Load($pObjectName){
    if ((class_exists($pObjectName)) || (strpos($pObjectName, 'PHPExcel') === False)) {
        return false;
    }
    // this is the code that shows what I am saying
    $pObjectFilePath =  PHPEXCEL_ROOT . str_replace('_',DIRECTORY_SEPARATOR,$pObjectName).'.php';
 
    if ((file_exists($pObjectFilePath) === false) || (is_readable($pObjectFilePath) === false)) {
        return false;
    }
    require($pObjectFilePath);
}
//  function Load()

然后

class TestController extends Controller{  
    // no layouts here
    public $layout = '';
 
    public function actionTest(){
        // get a reference to the path of PHPExcel classes
        $phpExcelPath = Yii::getPathOfAlias('ext.phpexcel.Classes');
        // Turn off our amazing library autoload
        spl_autoload_unregister(array('YiiBase','autoload'));
        // making use of our reference, include the main class
        // when we do this, phpExcel has its own autoload registration
        // procedure (PHPExcel_Autoloader::Register();)
        include($phpExcelPath . DIRECTORY_SEPARATOR . 'PHPExcel.php');

        // Create new PHPExcel object
        $objPHPExcel = new PHPExcel();

        // Set properties
        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")->setLastModifiedBy("Maarten Balliauw")->setTitle("PDF Test Document")->setSubject("PDF Test Document")->setDescription("Test document for PDF, generated using PHP classes.")->setKeywords("pdf php")->setCategory("Test result file");
 
        // Add some data
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'Hello')->setCellValue('B2', 'world!')->setCellValue('C1', 'Hello')->setCellValue('D2', 'world!');

        // Miscellaneous glyphs, UTF-8
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A4', 'Miscellaneous glyphs')->setCellValue('A5', '测试测试测试');

        // Rename sheet
        $objPHPExcel->getActiveSheet()->setTitle('Simple');

        // Set active sheet index to the first sheet,
        // so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);

        // Redirect output to a client’s web browser (Excel2007)
        header('Content-Type: application/pdf');
        header('Content-Disposition: attachment;filename="01simple.pdf"');
        header('Cache-Control: max-age=0');

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
        $objWriter->save('php://output');
        Yii::app()->end();

        // Once we have finished using the library, give back the
        // power to Yii...
        spl_autoload_register(array('YiiBase','autoload'));
    }
}

发表评论