【问题标题】:Error reading Excel file using Spout使用 Spout 读取 Excel 文件时出错
【发布时间】:2015-12-22 22:46:14
【问题描述】:

我在使用 kohana 3.2 中的 spout 库将大 Excel 文件导入 mysql 时遇到问题。这些是我采取的安装步骤:

在入口文件index.php中,我添加了这行代码:

require_once APPPATH.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'kohana'.DIRECTORY_SEPARATOR.'Spout'.DIRECTORY_SEPARATOR."Autoloader/autoload.php";

这是我的reader 方法:

public static function reader($filename){

    $result = array();

    $reader = ReaderFactory::create(Type::XLSX);
    $reader->open($filename);


    while ($reader->hasNextRow()) {
        $row = $reader->nextRow();
        $code = $row[1];
        $result[] = $code;
    }

    return $result;
}

当我尝试调用该方法时,出现以下错误消息:

ERROR: ErrorException [ 1 ]: Class 'ReaderFactory' not found ~ APPPATH/classes/kohana/spoutexcel.php [ 70 ]
2015-09-25 14:29:10 --- STRACE: ErrorException [ 1 ]: Class 'ReaderFactory' not found ~ APPPATH/classes/kohana/spoutexcel.php [ 70 ]

我做错了什么?

Spout 可以在这里找到:https://github.com/box/spout

【问题讨论】:

  • 问题是?
  • 可能是 Spout 自动加载器在错误的目录中寻找它的类。我假设 spout 类应该在 APPPATH/classes/kohana/Spoutdirectory 中,而不是在其父目录中。

标签: php kohana-3.2


【解决方案1】:

您是如何安装 Spout 的?如果您使用 Composer,则需要包含 (require_once) Composer 在安装 Spout 时生成的 autoload.php 文件。

如果您没有使用 Composer,可以按照此处的说明进行操作:https://github.com/box/spout#manual-installation。它解释了自动加载 Spout 类需要包含的文件。

正如@mrBrown 提到的,不要忘记定义命名空间,使用use Box\Spout\Reader\ReaderFactory;

【讨论】:

    【解决方案2】:

    你定义了命名空间吗?

    use Box\Spout\Reader\ReaderFactory;

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多