首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递给PHPExcel_IOFactory::createWriter()的参数1必须是PHPExcel的实例

问传递给PHPExcel_IOFactory::createWriter()的参数1必须是PHPExcel的实例
EN

Stack Overflow用户
提问于 2016-07-29 06:15:50
回答 1查看 3.4K关注 0票数 0

我有个问题。根据PHPExcel,我在cakephp2.x中使用https://github.com/segy/PhpExcel。

现在我已经加载了PHPExcel

代码语言:javascript
复制
public $helpers = array('PhpExcel');
public $components = array('PhpExcel');

我在控制器里这样做:

代码语言:javascript
复制
$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实例,在2012年行的PhpExcelComponent中调用,并定义了APP\Vendor\PHPExcel\IOFactory.php,第132行 警告(4096):传递给PHPExcel_Writer_Excel5::__construct()的参数1必须是PHPExcel的实例,即给定的PhpExcelComponent实例,在第141行的PHPExcel中调用,并定义APP\Vendor\PHPExcel\Writer\Excel5.php,第106行 警告(4096):传递给PHPExcel_Calculation::getInstance()的参数1必须是PHPExcel的实例,即给定的PhpExcelComponent实例,在第123行的PhpExcelComponent中调用,并在第1762行中定义了APP\Vendor\PHPExcel\Calculation.php 警告(4096):传递给PHPExcel_Calculation::getInstance()的参数1必须是PHPExcel的实例,即给定的PhpExcelComponent实例,在第124行的PhpExcelComponent中调用,并在第1762行中定义了APP\Vendor\PHPExcel\Calculation.php 警告(4096):传递给PHPExcel_Writer_Excel5_Workbook::__construct()的参数1必须是PHPExcel的实例,即给定的PhpExcelComponent实例,在第134行的D:\xampp\htdocs\SSUK\app\Vendor\PHPExcel\Writer\Excel5.php中调用并定义了APP\Vendor\PHPExcel\Writer\Excel5\Workbook.php,第203行 警告(4096):传递给PHPExcel_Calculation::getInstance()的参数1必须是PHPExcel的实例,即给定的PhpExcelComponent实例,在第229行的PhpExcelComponent中调用,并在第1762行中定义了APP\Vendor\PHPExcel\Calculation.php

如果我是通过对象这样做的话:

代码语言:javascript
复制
    $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

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-29 06:53:52

你需要用这一行

代码语言:javascript
复制
$this->PhpExcel->getWriter('Excel5');
 $excel_name = 'new_booking.xlsx';
 $this->PhpExcel->save('img/excel/' . $excel_name);

而不是

代码语言:javascript
复制
$objWriter = PHPExcel_IOFactory::createWriter($this->PhpExcel, 'Excel5');
$excel_name = 'new_booking.xlsx';
$objWriter->save('img/excel/' . $excel_name);

在控制器里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38651729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档