2

我已经使用box/spoutPHP 电子表格库有一段时间了。当我移动目录并box/spout通过键入重新安装时,我遇到了一个问题:

composer require box/spout

安装很顺利,但是当我尝试使用阅读器功能时出现了一个问题:

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();

这很好用!现在我不确定我从哪里得到这个代码。可能来自过时的文档,可能来自另一个流氓教程页面,当我过去遇到同样的问题时......这可能是作曲家问题吗?还是我只是疯了?

4

1 回答 1

1

它看起来像一个作曲家的问题。您似乎没有拉出最新版本的 Spout,因此ReaderEntityFactory未找到。

您可以尝试运行此命令来检查:composer show box/spout | grep versions

于 2019-08-12T09:27:57.293 回答