【发布时间】:2016-07-29 06:15:50
【问题描述】:
我遇到了问题。根据https://github.com/segy/PhpExcel,我在cakephp2.x中使用PHPExcel。
现在我已经加载了PHPExcel
public $helpers = array('PhpExcel');
public $components = array('PhpExcel');
我在控制器中这样做:
$this->PhpExcel->createWorksheet()->setDefaultFont('Calibri', 12);
$this->PhpExcel->getActiveSheet()->setTitle('SSUK New booking');
// define table cells
$table = array(
array('label' => __('Student First Name')),
array('label' => __('Student Last Name')),
array('label' => __('Student Group')),
);
$this->PhpExcel->addTableHeader($table, array('name' => 'Cambria', 'bold' => true));
$this->PhpExcel->addTableRow(array(
'abcd',
'qwerty',
'cts',
));
$this->PhpExcel->addTableFooter();
$objWriter = PHPExcel_IOFactory::createWriter($this->PhpExcel, 'Excel5');
$excel_name = 'new_booking.xlsx';
$objWriter->save('img/excel/' . $excel_name);
exit();
一切正常,excel 生成并保存到文件夹.. 但我收到了一些警告:
警告 (4096):传递给 PHPExcel_IOFactory::createWriter() 的参数 1 必须是 PHPExcel 的实例, 给定的 PhpExcelComponent 实例,调用 D:\xampp\htdocs\SSUK\app\Controller\ChildFormsController.php 上线 2012 年并定义 [APP\Vendor\PHPExcel\IOFactory.php,第 132 行]
警告 (4096):参数 1 传递给 PHPExcel_Writer_Excel5::__construct() 必须是 PHPExcel 的实例, 给定的 PhpExcelComponent 实例,调用 D:\xampp\htdocs\SSUK\app\Vendor\PHPExcel\IOFactory.php 在第 141 行和 定义 [APP\Vendor\PHPExcel\Writer\Excel5.php,第 106 行]
警告 (4096):参数 1 传递给 PHPExcel_Calculation::getInstance() 必须是 PHPExcel 的一个实例, 给定的 PhpExcelComponent 实例,调用 D:\xampp\htdocs\SSUK\app\Vendor\PHPExcel\Writer\Excel5.php 在第 123 行 并定义了 [APP\Vendor\PHPExcel\Calculation.php,第 1762 行]
警告 (4096):参数 1 传递给 PHPExcel_Calculation::getInstance() 必须是 PHPExcel 的一个实例, 给定的 PhpExcelComponent 实例,调用 D:\xampp\htdocs\SSUK\app\Vendor\PHPExcel\Writer\Excel5.php 在第 124 行 并定义了 [APP\Vendor\PHPExcel\Calculation.php,第 1762 行]
警告 (4096):参数 1 传递给 PHPExcel_Writer_Excel5_Workbook::__construct() 必须是 PHPExcel,给定的 PhpExcelComponent 实例,调用 D:\xampp\htdocs\SSUK\app\Vendor\PHPExcel\Writer\Excel5.php 在第 134 行 并定义了 [APP\Vendor\PHPExcel\Writer\Excel5\Workbook.php, line 203]
警告 (4096):参数 1 传递给 PHPExcel_Calculation::getInstance() 必须是 PHPExcel 的一个实例, 给定的 PhpExcelComponent 实例,调用 D:\xampp\htdocs\SSUK\app\Vendor\PHPExcel\Writer\Excel5.php 在第 229 行 并定义了 [APP\Vendor\PHPExcel\Calculation.php,第 1762 行]
现在如果我通过像这样的对象来完成它:
$objPHPExcel = new PHPExcel();
$objPHPExcel->createWorksheet()->setDefaultFont('Calibri', 12);
$objPHPExcel->getActiveSheet()->setTitle('SSUK New booking');
// define table cells
$table = array(
array('label' => __('Student First Name')),
array('label' => __('Student Last Name')),
array('label' => __('Student Group')),
);
$objPHPExcel->addTableHeader($table, array('name' => 'Cambria', 'bold' => true));
$objPHPExcel->addTableRow(array(
'abcd',
'qwerty',
'cts',
));
$objPHPExcel->addTableFooter();
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$excel_name = 'new_booking.xlsx';
$objWriter->save('img/excel/' . $excel_name);
exit();
然后我得到了这个错误
致命错误
错误:调用未定义的方法 PHPExcel::createWorksheet() 文件: D:\xampp\htdocs\SSUK\app\Controller\ChildFormsController.php 行: 1917
注意:如果要自定义此错误消息,请创建 app\View\Errors\fatal_error.ctp
任何帮助将不胜感激。
【问题讨论】: