【问题标题】:PHPExcel: 'PHPExcel_Reader_excel.php' not foundPHPExcel:找不到“PHPExcel_Reader_excel.php”
【发布时间】:2014-05-20 03:21:48
【问题描述】:

我正在使用 phpexcel,但我遇到了一个问题:创建阅读器对象时出现此错误:

致命错误:在第 170 行的 C:\xampp\htdocs\phpexcel\Classes\PHPExcel\IOFactory.php 中找不到类“PHPExcel_Reader_excel.php”

我的代码是:

    <?php
require_once(dirname(__FILE__)."/Classes/phpexcel.php");
//or
require_once(dirname(__FILE__)."/Classes/PHPExcel/IOFactory.php");
//$phpexcel = new PHPExcel();
$reader = PHPExcel_IOFactory::createReader("excel.php");
?>

我在第 170 行检查了 IOFactory.php,发现:

$searchType = 'IReader';

    // Include class
    foreach (self::$_searchLocations as $searchLocation) {
        if ($searchLocation['type'] == $searchType) {
            $className = str_replace('{0}', $readerType, $searchLocation['class']);

            $instance = new $className();
            if ($instance !== NULL) {
                return $instance;
            }
        }
    }

但无法找到任何类,因为它们使用的是 _ 而不是 /(路径是 phpexcel\Classes\PHPExcel\Reader 并且有 excel5.php excel2007.php 之类的文件,但不是 excel.php)

怎么了?文档有点混乱

【问题讨论】:

    标签: php phpexcel xls xlsx


    【解决方案1】:

    除非您添加了一个名为 PHPExcel_Reader_excel.php 的自定义阅读器,否则这将返回错误。

    PHPExcel User Documentation - Reading Spreadsheet Filesonline 的第 1 部分和/Documentation 文件夹中所述,有 7 种不同的阅读器可用于 7 种不同的电子表格格式:

    PHPExcel 可以读取多种不同的电子表格文件格式,但并非所有阅读器都支持所有功能。查看功能交叉参考文档 (Functionality Cross-Reference.xls) 中的列表,其中列出了哪些阅读器支持哪些功能。

    目前,PHPExcel 支持以下文件类型进行读取:

    Excel5

    Microsoft Excel™ 二进制文件格式(BIFF5 和 BIFF8)是 Microsoft Excel™ 在 95 和 2003 版本之间使用的二进制文件格式。大多数电子表格程序(在不同程度上)支持该格式。 BIFF 文件通常具有 .xls 的扩展名。描述该格式的文档可以在http://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspxhttp://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/[MS-XLS].pdf 在线找到(作为可下载的PDF)。

    Excel2003XML

    Microsoft Excel™ 2003 包含一种名为 SpreadsheetML 的文件格式选项。该文件是一个压缩的 XML 文档。它不是很常见,但它的核心功能是受支持的。该格式的文档可以在http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx 找到,但遗憾的是它的细节相当稀疏。

    Excel2007

    Microsoft Excel™ 2007 附带了一种新的文件格式,即 Microsoft Office Open XML SpreadsheetML,而 Excel 2010 进一步扩展了它的新功能,例如迷你图。这些文件的扩展名通常为 .xlsx。此格式基于可扩展标记语言 (XML) 文件的压缩集合。 Microsoft Office Open XML SpreadsheetML 主要在 ECMA 376 (http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm) 和 ISO 29500 中标准化。

    OOCalc

    又名开放文档格式 (ODF) 或 OASIS,这是用于电子表格的 OpenOffice.org XML 文件格式。它包含一个 zip 存档,其中包含几个组件,所有这些组件都是文本文件,其中大部分都带有可扩展标记语言 (XML) 中的标记。它是 OpenOffice.org Calc 和 StarCalc 的标准文件格式,文件的扩展名通常为 .ods。已发布的文件格式规范可从 OASIS Open Office XML 格式技术委员会网页 (http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office#technical) 获得。其他信息可从 OpenOffice.org XML 文件格式网页 (http://xml.openoffice.org/general.html) 获得,它是 OpenOffice.org 项目的一部分。

    SYLK

    这是 Microsoft 多计划符号链接交换 (SYLK) 文件格式。 Multiplan 是 Microsoft Excel™ 的前身。文件通常具有 .slk 的扩展名。虽然不常见,但仍有一些应用程序生成 SYLK 文件作为跨平台选项,因为(尽管仅限于单个工作表)它是一种易于实现的格式,并且支持一些基本数据和单元格格式选项(不像CSV 文件)。

    Gnumeric

    Gnome Gnumeric 电子表格应用程序使用 Gnumeric 文件格式,通常文件具有 .gnumeric 扩展名。文件内容使用可扩展标记语言 (XML) 标记存储,然后使用 GNU 项目的 gzip 压缩库压缩文件。 http://projects.gnome.org/gnumeric/doc/file-format-gnumeric.shtml

    CSV

    逗号分隔值 (CSV) 文件格式是文本格式文件的常见结构化策略。在 CSV 文件中,文件中的每一行代表一行数据,并且(在文件的每一行内)不同的数据字段(或列)使用逗号(“,”)相互分隔。如果数据字段包含逗号,则应将其括起来(通常用引号 (")。有时制表符“\t”或管道符号 (“|”) 用作分隔符而不是逗号。因为 CSV 是纯文本格式,不支持任何数据格式选项。

    使用createReader()方法时,需要通过name指定读者,例如:

    $reader = PHPExcel_IOFactory::createReader("Excel5");
    

    /Examples 文件夹中有很多示例显示了不同阅读器的这种用法,让 PHPExcel 自己使用 load() 选择正确的阅读器,以及在设置阅读器之前验证您的文件格式是否正确identify() 方法

    我不得不承认,我认为这个文档相当简单,尤其是包含的示例

    【讨论】:

    • 谢谢,我很抱歉我的愚蠢问题,我不知道为什么我对这些方法感到困惑,事实上我是 tryint createReader("excel.xls") 但我犯了一个错误在输入我的代码时,但 load() 工作正常...谢谢
    【解决方案2】:

    为了方便你可以使用 $objReader = PHPExcel_IOFactory::createReaderForFile($file); 它会自动为您的文件选择一个阅读器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      相关资源
      最近更新 更多