2012-06-24 46 views
5

我試圖在CodeIgniter中使用PHPExcel。Codeigniter中的PHPExcel錯誤

,但我得到一個錯誤

致命錯誤:調用私有IOFactory :: __結構()根據上下文 'CI_Loader' 在C:\ ms4w \ Apache的\ htdocs中\種植\ SYSTEM \核心\ Loader.php上線949

我把PHPExcel我的應用程序/庫

,這是我的代碼控制器

function excel() 
    { 

     $this->load->library('phpexcel'); 
     $this->load->library('PHPExcel/iofactory'); 

     $objPHPExcel = new PHPExcel(); 
     $objPHPExcel->getProperties()->setTitle("title") 
     ->setDescription("description"); 

     // Assign cell values 
     $objPHPExcel->setActiveSheetIndex(0); 
     $objPHPExcel->getActiveSheet()->setCellValue('A1', 'cell value here'); 

     // Save it as an excel 2003 file 
     $objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5'); 
     $objWriter->save("nameoffile.xls"); 

    } 

SAM Ë爲http://codeigniter.com/wiki/PHPExcel/

請解決這種情況下

我用笨2.0和php 1.7.7脫穎而出

感謝您的關注

BR

法會

+0

我不是CI專家,但應該包含文件名區分大小寫嗎? –

+0

@EswarRajeshPinapala,@MarkBaker終於可以工作了,但是當我下載excel時,字體很奇怪**þÿÕÍÕœ。「 - +,ù®0¼HPX'hp**當我放置標題代碼並使用代碼'$ objWriter-> save ('php:// output');'在我的控制器中。有任何想法嗎?? –

+0

其實,你不應該輸出excel內容到瀏覽器,因爲瀏覽器不能讀取它。看到我的答案,就如何解決這個問題。另外,你也可以做$ objWriter-> save('test.xlsx');. –

回答

10

這裏你如何設置你的功能,這也解決了你的無效字符問題,包括正確的標題和做一個ob_en d_clean();清理任何輸出緩衝。儘量在保存()之前執行此操作。

public function howToPhpExcel() 
{ 
    $response = $this->_response; 

    $this->_helper->layout->disableLayout(); 
    $this->_helper->viewRenderer->setNoRender(); 

    $excel = new PHPExcel(); 
    $excel->setActiveSheetIndex(0); 
    $worksheet = $excel->getActiveSheet(); 
    $worksheet->getCell('A1')->setValue('tet'); 
    $worksheet->getCell('B1')->setValue('tet'); 

    ob_end_clean(); 

    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
    header("Cache-Control: no-store, no-cache, must-revalidate"); 
    header("Cache-Control: post-check=0, pre-check=0", false); 
    header("Pragma: no-cache"); 
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
    header('Content-Disposition: attachment;filename="Report.xlsx"'); 

    $objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); 
    ob_end_clean(); 

    $objWriter->save('php://output'); 
    $excel->disconnectWorksheets(); 
    unset($excel); 

} 
+0

非常感謝你@EswarRajeshPinapala的回覆。謝謝你節省我的時間。 –

+0

歡迎您! –