2012-06-24 29 views
5

Tôi đang cố gắng sử dụng PHPExcel với CodeIgniter.lỗi PHPExcel trong Codeigniter

nhưng tôi đã nhận một lỗi

Fatal error: Call to IOFactory tin :: __ construct() từ bối cảnh 'CI_Loader' trong C: \ ms4w \ Apache \ htdocs \ trồng \ system \ core \ Loader.php trên đường dây 949

i đặt PHPExcel trong các ứng dụng của tôi/thư viện

và đây là điều khiển mã của tôi

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 e như http://codeigniter.com/wiki/PHPExcel/

lòng để giải quyết trường hợp này

tôi sử dụng CodeIgniter 2.0 và php trội 1.7.7

nhờ sự quan tâm của bạn

BR

Puja

+0

Tôi không phải là chuyên gia về CI, nhưng phải bao gồm tên tệp có phân biệt chữ hoa chữ thường hay không? –

+0

@EswarRajeshPinapala, @MarkBaker cuối cùng là chủ đề nó hoạt động nhưng khi tôi tải xuống excel phông chữ là lạ ** þÿÕÍÕœ. “- +, ù®0¼HPX'hp ** khi tôi đặt mã tiêu đề và sử dụng mã' $ objWriter-> lưu ('php: // output'); 'trong bộ điều khiển của tôi. Bất kỳ ý tưởng ?? –

+0

Trên thực tế, bạn không nên xuất nội dung excel ra trình duyệt, vì vậy trình duyệt không thể đọc được. xem câu trả lời của tôi, về cách giải quyết vấn đề này. Hoặc bạn cũng có thể làm $ objWriter-> save ('test.xlsx') ;. –

Trả lời

10

Đây là làm thế nào bạn có thể thiết lập chức năng của bạn này cũng giải quyết vấn đề ký tự không hợp lệ của bạn, bao gồm các tiêu đề thích hợp và làm một ob_en d_clean(); để làm sạch mọi bộ đệm đầu ra. Làm điều này ngay trước khi bạn lưu() mặc dù.

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

cảm ơn bạn rất nhiều @EswarRajeshPinapala cho câu trả lời của bạn. Cảm ơn bạn đã tiết kiệm thời gian của tôi. –

+0

Bạn được hoan nghênh! –