2017-03-06 31 views
0

PHPExcelとCodeIgniterを使用して、作成しているプロジェクトに関するレポートを生成しています。私はまだPHPExcelが初めてです。まず、PHPExcelフォルダとPHPExcel.phpファイルをアプリケーションのlibrariesフォルダに配置しました。PHPExcel:ヌルのメンバー関数setActiveSheetIndex()を呼び出す

プログラムを実行しようとすると、「メンバー関数setActiveSheetIndex()をnullにコールする」というエラーが表示されます。

私はライブラリが実際にアプリケーションにロードされているかどうかを確認しようとしました。だから私はこれを試しました: `

if(class_exists('PHPExcel')){ 
     echo "yes"; 
    } else { 
     echo "no"; 
    } 

「はい」と警告します。これは、ライブラリがロードされていることを意味します。しかし、なぜ関数がnullを返すのかわかりません。ここで

は私のコントローラのコードです:

public function excel_report1() 
{ 
    $this->load->library('PHPExcel'); 

    $this->excel->setActiveSheetIndex(0); 

    $this->excel->getActiveSheet()->setTitle('Users list'); 

    $startDate = $this->input->post('fromDate'); 
    $endDate = $this->input->post('toDate'); 
    $data = $this->KudosModel->getDateRange($startDate,$endDate); 

    $styleArray = array(
    'font' => array(
     'bold' => true, 
     'size' => 15, 
    )); 

    $styleArray2 = array(
    'font' => array(
     'size' => 15, 
    )); 

    $this->excel->getActiveSheet()->mergeCells('A1:B1'); 
    $this->excel->getActiveSheet()->setCellValue('A1', 'TOTAL KUDOS COUNT ('.$startDate.' - '.$endDate.')'); 
    $this->excel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
    $this->excel->getActiveSheet()->getStyle('A1')->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID,'color' => array('rgb' => 'FF0000')))); 
    $this->excel->getActiveSheet()->getStyle('A1:B1')->applyFromArray($styleArray); 

    $this->excel->getActiveSheet()->getStyle('A2:D2')->applyFromArray($styleArray); 
    $this->excel->getActiveSheet()->getColumnDimension('A')->setWidth(30); 
    $this->excel->getActiveSheet()->getColumnDimension('B')->setWidth(30); 

    $this->excel->getActiveSheet()->setCellValue('A2', 'Month and Year'); 
    $this->excel->getActiveSheet()->setCellValue('B2', 'Kudos Count'); 



    $row = 3; 
    foreach($data as $r){ 
     $this->excel->getActiveSheet()->fromArray(array($r->emp_id, $r->emp_stat, $r->isActive, $r->dateStarted), null, 'A'.$row); 
     $this->excel->getActiveSheet()->getStyle('A'.$row.':B'.$row)->applyFromArray($styleArray2); 
     $row++; 
    } 

    ob_end_clean(); 
    date_default_timezone_set("Asia/Manila"); 
    $timestamp=date("Y-m-d-His"); 
    $filename='KudosCount.xls'; 

    header('Content-Type: application/vnd.ms-excel'); 

    header('Content-Disposition: attachment;filename="'.$filename.'"'); 

    header('Cache-Control: max-age=0'); 

    $objWriter = PHPExcel_IOFactory::createWriter($this->PHPExcel, 'Excel2007'); 

    //$objWriter->save('php://output'); 
    $objWriter->save($filename); 
    exit(); 
} 

誰もこれについて何かを知っている場合。私に知らせてください。前もって感謝します。

答えて

1

あなたはCodeIgniterの中$this->excelクラスのプロパティとしてPHPExcelを使用する場合は、負荷にそれをエイリアスする必要があります:$this->PHPExcel

$this->load->library('PHPExcel', NULL, 'excel'); 

そうでない場合、ライブラリは、ライブラリの名前として利用できるようになります。

+0

だから、あなたが言ったことを使わないなら。私は$ this-> PHPExcel-> setActiveSheetIndex(0)のようにしますか?エラーは消えました。しかし今、それはサイトに到達することができないと言います。 – Azis

+0

引数1はPHPExcel_IOFactory :: createWriter()に渡され、PHPExcelのインスタンスでなければなりません。 – Azis

+0

broを助けてくれてありがとう。これは私の問題を解決しました。すてきな一日を – Azis

関連する問題