我试图实现使用 PHPExcel 将 XLS 文件中的单个工作表转换为 CSV - 内存耗尽,但卡在 PHP Excel 加载过程中。
我下载了包(http://phpexcel.codeplex.com/),并按照安装说明将文件夹"类"复制到三个目录:
1) C:\xampp\htdocs\mycode - 只是我当前的工作目录
2) C:\xampp\php\pear - bcs 这是我在echo get_include_path();
时得到的
和
3) C:\xampp\php\pear\PEAR - 你知道,以防万一...
仍然当我运行时:
include 'PHPExcel.php';
include 'PHPExcel/IOFactory.php';
我收到以下错误消息:
警告:include(PHPExcel.php):无法打开流:在第5行的C:\xampp\htdocs\mycode\paths.php中没有这样的文件或目录
警告:include():打开"PHPExcel.php"以包含失败(include_path='。C:\xampp\php\PEAR') 在 C:\xampp\htdocs\mycode\paths.php 第 5 行
警告:include(PHPExcel/IOFactory.php):无法打开流:在第6行的C:\xampp\htdocs\mycode\paths.php中没有这样的文件或目录
警告:include():打开"PHPExcel/IOFactory.php"进行包含(include_path='失败。C:\xampp\php\PEAR') 在 C:\xampp\htdocs\mycode\paths.php 第 6 行
提前...
。将文件夹"类"复制到三个目录
似乎提示就在那里。不应该是
require_once 'Classes/PHPExcel.php';
或者,将Classes
文件夹添加到包含路径...
set_include_path(implode(PATH_SEPARATOR, [
realpath(__DIR__ . '/Classes'), // assuming Classes is in the same directory as this script
get_include_path()
]));
require_once 'PHPExcel.php';
就我而言,我不得不更换我的
include "../classes/Projects.php";
通过这个:
require_once "./classes/Projects.php";
当您包含文件时,它将相对于您从中调用include
的文件。 确保您在正确的目录中查找。 我这样说是因为您包含文件的方式似乎好像 PHPExcel 文件应该在完全相同的目录中,但看起来您将其放入名为 classes
的文件夹中。
例如,如果您的目录结构如下所示:
C:
- xampp
- htdocs
- mycode
- classes (where you extracted your files to...)
- (more files and subdirectories in here)
- index.php (where you are including file into...)
然后,您将包括index.php
所在的位置。 因此,如果 PHPExcel 位于 classes
文件夹中,那么您的 include
语句应如下所示:
include classes/PHPExcel.php
或include classes/PHPExcel/IOFactory.php
这个模块最初对我有用。 但后来我添加了 Yii2 并花了很长时间寻找问题的解决方案。 对于那些找到这个主题的人,就像我所做的那样,并将 Yii2 添加到 Yii1,我将离开这个解决方案。
对我来说首先帮助了这个。
spl_autoload_unregister(['YiiBase', 'autoload']);
require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
spl_autoload_register(['YiiBase', 'autoload']);
当我添加 Yii2 时,我改变了
spl_autoload_unregister(['Yii', 'autoload']);
spl_autoload_unregister(['YiiBase', 'autoload']);
require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
spl_autoload_register(['YiiBase', 'autoload']);
spl_autoload_register(['Yii', 'autoload']);
下次使用
$objPHPExcel = new PHPExcel();
...
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');