【发布时间】:2016-02-29 21:14:01
【问题描述】:
大家下午好,
我正在处理 PHPExcel 中的一个问题。使用以下代码:
try {
$inputFileType = PHPExcel_IOFactory::identify($fileLocation);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($fileLocation);
} catch(Exception $e) {
die('ERROR LOADING FILE: "'.print_r(pathinfo($fileLocation),true).'": '.$e->getMessage());
} # end try catch
此响应带有此错误消息: 错误加载文件:“数组([dirname] => upload [basename] => d10f8...188 [filename] => d10f8....188)”:单元格坐标必须是单元格范围。
这没有任何意义,因为我还没有读取文件,只是加载它。这段代码已经存在并且可以正常工作几个月(可能超过 100 次使用),只有一个文件导致了这个错误。该文件是 Office2007 XLSX(就像所有其他文件一样),我已将文件转换为多种其他格式(xls、xlt、xlsm),但也不会加载任何副本。我在文件中没有发现任何可以解释这种行为的有趣内容。
我没有在我的日志中找到任何内容,并且无法理解“单元格坐标必须是一系列单元格”的错误消息。我已隔离代码并确保在此尝试/捕获期间生成此错误消息并且不是来自其他地方。
任何帮助将不胜感激,
保罗
【问题讨论】:
-
您确实意识到“加载文件”需要阅读并解析文件.....阅读不仅仅是您当你从 PHPExcel 对象访问数据时,所有的“阅读”都已经完成,然后你才能做到这一点
-
至于错误本身,如果不知道错误发生在代码库的哪个位置,我帮不了你.....
$e应该给你一个getTrace()可以提供帮助的方法确定问题的潜在原因 -
@Mark-Baker,这一切都发生在加载文件的脚本的前 10 行。我在 mycatch 中添加了一些调试并得到了这些结果:
codeEXCEPTION 单元格坐标必须是一个单元格范围。来源:/var/www/stage/custom/k/phpexcel/PHPExcel/Worksheet/PageSetup.php (649) /var/www/stage/custom/k/phpexcel/PHPExcel/Reader/Excel2007.php (1702) /var /www/stage/custom/modules/Excel_ExcelReader/metadata/listviewdefs.php (69) 所有这些都指向有关文档打印区域的功能。这对我来说没有多大意义。有任何想法吗?感谢您的帮助! -
@MarkBaker:感谢您将我指向 getTrace!这向我表明错误出在 PHPExcel 处理打印区域中。删除了所有打印区域,文件现在可以使用了!
标签: try-catch phpexcel phpexcelreader