尝试使用 PhpSpreadsheet 从 XLSX 文件读取,但是出现以下错误:
PHP Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Exception: Your requested sheet index: -1 is out of bounds. The actual number of sheets is 0. in C:\php\projects\stock\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet.php:678
肯定有一个工作表,当我删除表格并仅包含未格式化的数据时,我下面的代码可用于提取单个单元格。
$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
$inputFileName = "path/to/temp_file_download.xlsx";
$inputFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($inputFileName);
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
$spreadsheet = $reader->load($inputFileName);
echo $cellValue = $spreadsheet->getActiveSheet()->getCellByColumnAndRow(2, 2)->getValue();
似乎使用Excel保存文件可以正常工作,但是excel并没有抱怨它已损坏等。我无法控制由外部来源生成的实际电子表格。
只是想知道是否有人遇到过类似的问题并且有任何解决方法,或者我可能做错了什么?
试图也使用较旧的PhpExcel来使其正常工作,但是在我再次保存文件之前,会发生类似的问题。
还尝试了类似问题的XLSXReader:
PHP Fatal error: Uncaught Exception: File /xl/workbook.xml does not exist in the Excel file in C:\php\projects\stock\vendor\XLSXReader\XLSXReader.php:57
Stack trace:
#0 C:\php\projects\stock\vendor\XLSXReader\XLSXReader.php(70): XLSXReader->getEntryData()
#1 C:\php\projects\stock\vendor\XLSXReader\XLSXReader.php(47): XLSXReader->parse()
#2 C:\php\projects\stock\stock.php(17): XLSXReader->__construct()
#3 {main}
thrown in C:\php\projects\stock\vendor\XLSXReader\XLSXReader.php on line 57
对于在阅读这些区域创建的文件时遇到问题的人来说,在网上已经看到许多问题,但是仍然不确定是否有简单的解决方法。
答案 0 :(得分:0)
添加以下针对非标准xlsx hack提到的解决方法似乎可以解决问题!
https://github.com/PHPOffice/PHPExcel/issues/1187
只需添加将xlsx类扩展到phpspreadsheet的类,然后调用该类即可,一切正常!