2012-06-24 13 views
5

Sto cercando di utilizzare PHPExcel con CodeIgniter.errore PHPExcel in Codeigniter

ma ho ottenuto un errore di

Fatal error: Call to IOFactory privato :: __ construct() dal contesto 'CI_Loader' in C: \ ms4w \ Apache \ htdocs \ piantagione \ system \ Core \ Loader.php on line 949

ho messo il PHPExcel nei miei apps/librerie

e questo è il mio controller codice

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

piacere a risolvere questo caso

io uso CodeIgniter 2.0 e PHP 1.7.7 eccellere

grazie per la vostra attenzione

BR

Puja

+0

Non sono un esperto di CI, ma i nomi dei file devono includere maiuscole e minuscole? –

+0

@EswarRajeshPinapala, @MarkBaker finalmente il thread funziona, ma quando scarico l'Excel il font è strano ** þÿÕÍÕœ. "- +, ù®0¼HPX'hp ** quando inserisco il codice dell'intestazione e uso il codice' $ objWriter-> salva ('php: // output'); 'nel mio controller. Qualche idea?? –

+0

In realtà, non dovresti inviare i contenuti excel al browser, perché il browser non può leggerlo. vedi la mia risposta, su come risolvere questo problema. In alternativa puoi anche fare $ objWriter-> save ('test.xlsx') ;. –

risposta

10

Ecco come puoi impostare la tua funzione risolve anche il tuo problema di caratteri non validi, includi intestazioni appropriate e fai un ob_en d_clean(); per pulire qualsiasi buffer di output. Fatelo solo prima di salvare().

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

grazie mille @EswarRajeshPinapala per la tua risposta. Grazie, risparmiami il mio tempo. –

+0

Siete i benvenuti! –