Box/Spout 文档与 composer 安装不匹配?
Box/Spout documentation not matching composer install?
我使用 box/spout
PHP 电子表格库已经有一段时间了。当我移动目录并通过键入重新安装 box/spout
时出现了一个问题:
composer require box/spout
安装顺利,但当我尝试使用 reader 功能时出现问题:
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
$reader = ReaderEntityFactory::createReaderFromFile('/path/to/file.ext');
$reader->open($filePath);
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
// do stuff with the row
$cells = $row->getCells();
}
}
$reader->close();
我收到这个错误:
Uncaught Error: Class 'ReaderEntityFactory' not found in /path/to/file/using/spout/script.php:182
所以...在这一点上我觉得好吧,我知道我以前一直在使用它,所以有什么不同...这是我一直在使用的代码:
require_once '/home/path/to/vendor/box/spout/src/Spout/Autoloader/autoload.php';
use Box\Spout\Reader\ReaderFactory;
use Box\Spout\Common\Type;
$reader = ReaderFactory::create(Type::XLSX); //for XLSX files
$reader->open($filepath);
$reader->setShouldFormatDates(true);
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
// do stuff with the row
var_dump($row);
}
}
$reader->close();
而且效果很好!现在我不确定我从哪里得到这段代码。可能来自过时的文档,可能来自另一个流氓教程页面,当我过去遇到同样的问题时......这可能是作曲家的问题吗?还是我疯了?
看起来像是 Composer 的问题。您似乎没有下载最新版本的 Spout,因此 ReaderEntityFactory
未找到。
你可以尝试 运行 这个命令来检查:composer show box/spout | grep versions
?
我使用 box/spout
PHP 电子表格库已经有一段时间了。当我移动目录并通过键入重新安装 box/spout
时出现了一个问题:
composer require box/spout
安装顺利,但当我尝试使用 reader 功能时出现问题:
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
$reader = ReaderEntityFactory::createReaderFromFile('/path/to/file.ext');
$reader->open($filePath);
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
// do stuff with the row
$cells = $row->getCells();
}
}
$reader->close();
我收到这个错误:
Uncaught Error: Class 'ReaderEntityFactory' not found in /path/to/file/using/spout/script.php:182
所以...在这一点上我觉得好吧,我知道我以前一直在使用它,所以有什么不同...这是我一直在使用的代码:
require_once '/home/path/to/vendor/box/spout/src/Spout/Autoloader/autoload.php';
use Box\Spout\Reader\ReaderFactory;
use Box\Spout\Common\Type;
$reader = ReaderFactory::create(Type::XLSX); //for XLSX files
$reader->open($filepath);
$reader->setShouldFormatDates(true);
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
// do stuff with the row
var_dump($row);
}
}
$reader->close();
而且效果很好!现在我不确定我从哪里得到这段代码。可能来自过时的文档,可能来自另一个流氓教程页面,当我过去遇到同样的问题时......这可能是作曲家的问题吗?还是我疯了?
看起来像是 Composer 的问题。您似乎没有下载最新版本的 Spout,因此 ReaderEntityFactory
未找到。
你可以尝试 运行 这个命令来检查:composer show box/spout | grep versions
?