1

背景

好吧,我试图问这个问题,但它被关闭的速度比可怕的安全漏洞要快。我想使用 PEAR 的电子表格 Excel Writer 编写一个 excel 文件。我一直在谷歌上寻找一种简单的方法来做到这一点,最后找到了一个可以真正完成这项工作的助手。

但它使用 PHPExcel,所以我必须重写那个脚本,这是我最不担心的。我只是不想现在开始,然后仍然无法让它工作。

我还按照助手的要求下载了 PHPExcel

我有什么?

我有助手,我已经将助手添加到控制器中,如下所示:

public $helpers = array('PhpExcel.PhpExcel'); 

我已经在线创建(复制并粘贴)脚本到视图中,只是为了测试它是否有效。

问题是什么

我收到一个错误:

Error: The application is trying to load a file from the PhpExcel plugin

Error: Make sure your plugin PhpExcel is in the app\Plugin directory and was loaded

我已将文件包含在文件APP/Vendor/PHPExcel.php夹中(因为我在某处读到,如果插件不遵循 MVC 框架,则需要放入其中),但它仍然不起作用。也在插件目录中尝试过,同样的错误。这是我第一次使用助手(希望不是最后一次),所以我对此一无所知。

我还将APP/View/Helper/文件夹中的实际助手包含为PhpExcelHelper.php.

问题是我什至无法通过第 1 步。有人可以告诉我文件需要放在哪里以便我可以让它工作吗?

4

3 回答 3

6

如果你看一下 Helper 代码,你会注意到那里有这个函数叫做loadEssentials

protected function loadEssentials() {
    // load vendor class
    App::import('Vendor', 'PHPExcel/Classes/PHPExcel');
    if (!class_exists('PHPExcel')) {
        throw new CakeException('Vendor class PHPExcel not found!');
    }
}

现在您可以看到它在 PHPExcel 库的 Vendor 文件夹中查找。您应该做的是将 PHPExcel 代码放入App/Vendor/. 然后看看如何加载供应商包。然后助手应该在App/View/Helper并且当你实例化它时它应该工作。还要根据您的操作系统检查供应商中文件的 raed/write/excute 权限。

于 2013-02-13T08:43:41.363 回答
4

我是插件的作者,我最近对其进行了更改,因此它包含供应商类并自动加载它们。希望这可以解决您的问题。

于 2014-01-05T21:25:21.683 回答
4

对于那些想直接将 PHPExcel 集成到 Cakephp (2.x) 中的人,这就是我所做的,我将它放在 App/Vendor 文件夹中。

  1. 转到https://github.com/PHPOffice/PHPExcel 并下载整个 zip 文件。主要的核心文件夹是“类”。这就是我们将使用的。
  2. 将文件夹“Classes”放入 Cakephp 文件夹“APP/Vendor/PHPExcel”。
  3. 将其导入您的控制器,并在顶部使用此行:App::import('Vendor', 'PHPExcel', array('file' => 'PHPExcel/Classes/PHPExcel.php'));。记下“ PHPExcel.php ”文件的位置,并确保它在您的 Cakephp 文件夹中
  4. 您现在可以使用此行访问该对象:$objPHPExcel = new PHPExcel();
  5. 您在第一步下载的 PHPExcel zip 文件中有很多示例(也可以在此处找到

.

我的控制器中的完整示例(仅功能)

public function testxls() {

    $folderToSaveXls = '/var/www/html';

    $objPHPExcel = new PHPExcel();

    $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
                         ->setLastModifiedBy("Maarten Balliauw")
                         ->setTitle("PHPExcel Test Document")
                         ->setSubject("PHPExcel Test Document")
                         ->setDescription("Test document for PHPExcel, generated using PHP classes.")
                         ->setKeywords("office PHPExcel php")
                         ->setCategory("Test result file");

    $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A1', 'Hello')
        ->setCellValue('B2', 'world!')
        ->setCellValue('C1', 'Hello')
        ->setCellValue('D2', 'world!');

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save( $folderToSaveXls . '/test.xls' );



    }

.

希望能帮助到你。

于 2016-05-06T12:46:05.347 回答