PHPExcel:在 null 上调用成员函数 setActiveSheetIndex()
PHPExcel: Call to a member function setActiveSheetIndex() on null
我正在使用 PHPExcel 和 CodeIgniter 生成有关我正在制作的项目的报告。我还是 PHPExcel 的新手。我做的第一件事是将 PHPExcel 文件夹和 PHPExcel.php 文件放在应用程序的库文件夹中。
现在当我尝试 运行 程序时,它告诉我一个错误 "Call to a member function setActiveSheetIndex() on null"。
所以我尝试检查该库是否真的加载到应用程序上。所以我尝试了这个:`
if(class_exists('PHPExcel')){
echo "yes";
} else {
echo "no";
}
它提醒 "yes"。这意味着库已加载。但是我不知道为什么函数 returns 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();
}
如果有人知道这件事。请让我知道。提前谢谢你。
如果您想在 CodeIgniter 中将 PHPExcel 用作 $this->excel
class 属性,您必须在加载时为其添加别名:
$this->load->library('PHPExcel', NULL, 'excel');
否则,库将作为库的名称可用:$this->PHPExcel
。
我正在使用 PHPExcel 和 CodeIgniter 生成有关我正在制作的项目的报告。我还是 PHPExcel 的新手。我做的第一件事是将 PHPExcel 文件夹和 PHPExcel.php 文件放在应用程序的库文件夹中。
现在当我尝试 运行 程序时,它告诉我一个错误 "Call to a member function setActiveSheetIndex() on null"。
所以我尝试检查该库是否真的加载到应用程序上。所以我尝试了这个:`
if(class_exists('PHPExcel')){
echo "yes";
} else {
echo "no";
}
它提醒 "yes"。这意味着库已加载。但是我不知道为什么函数 returns 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();
}
如果有人知道这件事。请让我知道。提前谢谢你。
如果您想在 CodeIgniter 中将 PHPExcel 用作 $this->excel
class 属性,您必须在加载时为其添加别名:
$this->load->library('PHPExcel', NULL, 'excel');
否则,库将作为库的名称可用:$this->PHPExcel
。