【问题标题】:PHPExcel sheet index out of bounds exceptionPHPExcel工作表索引超出范围异常
【发布时间】:2016-03-21 16:39:43
【问题描述】:

我正在使用 PHPExcel 读取 xlsx 工作簿,以下是我目前使用的代码,只是为了设置活动工作表

date_default_timezone_set('Europe/London');
set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');

include 'PHPExcel/IOFactory.php';

$reader = PHPExcel_IOFactory::createReader('Excel2007');
$reader->setReadDataOnly(true);
$xlWB = $reader->load('/' . $target_file);
$xlWB->setActiveSheetIndex(0); //EXCEPTION OCCURS HERE

但我遇到了一个例外:

致命错误:未捕获的异常 'PHPExcel_Exception' 并带有消息“您尝试通过超出范围索引设置活动工作表:0。实际工作表数为 0。”在 /[my root]/Classes/PHPExcel.php:695 堆栈跟踪:#0 /[my-root]/conversion-demo.php(211): PHPExcel->setActiveSheetIndex(0) #1 {main} 在 /[my root]/Classes/PHPExcel.php 上线 695

该文件是一个 .xlsx 文件,它确实存在(路径正确)并且文件中有 3 张纸。

我在这里做一些根本错误的事情吗?

【问题讨论】:

  • 你不能选择按名称而不是索引。你可以试试吗?
  • 如果没有索引为 0 的工作表,则电子表格不包含任何工作表,或者加载文件时出现问题.....无论如何,只有你可以访问它失败的文件,所以我们几乎不可能再说什么
  • @MarkBaker 加载文件时出现问题,在客户端计算机上打开时需要损坏加载。感谢您的指针以为我要疯了!!!
  • @MarkBaker 刚刚尝试使用另一个 xlsx 工作簿并得到相同的结果,也许它毕竟不是工作簿......
  • 根本没有错;我不知道为什么它应该工作时不工作

标签: php phpexcel


【解决方案1】:

检查您从何处获取文件的权限 - 我刚刚在文件上传时遇到了这个问题,并更改了 Windows\Temp 中的权限修复了它。

【讨论】:

  • 该文件位于我服务器上根目录的子文件夹中,并且具有完全的读/写权限。
【解决方案2】:

尝试手动上传文件。

现在有同样的问题。 Excel 模板已提交到 git 存储库中,并且 git 以某种方式更改了工作表。所以,我将本地版本上传到服务器 - 现在它可以工作了。

更好的方法:这可以通过.gitattributes 文件解决,只需在此处写入*.xls binary,重命名文件并重新提交

【讨论】:

    【解决方案3】:

    以防万一有人在使用 $reader->setLoadSheetsOnly($sheetName$); 仅获取工作簿的特定工作表时遇到此错误,请仔细检查工作表名称,因为它区分大小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      相关资源
      最近更新 更多